2013-08-20 89 views
2

我想在剃鬚刀視圖中的下拉列表中設置選定的值。在剃刀視圖中設置下拉列表的選定值

 <select id="drpStatus" name="status"> 
       <option value="A">Active</option> 
       <option value="S">Suspended</option> 
       <option value="T">Terminated</option> 
       <option value="D">Deleted</option> 
     </select> 

//I am trying with the below code, based on the value in Model, I want to set the particular option as selected 
<option [email protected]{if(@Model!=null && @Model.Status=='A'){'selected'}} value="A">Active</option> 

上面的代碼不能正常工作,請讓我知道如果我在正確的方向我的工作或有任何其他/更好的方式來實現這一目標。

+0

這種觀點是編輯特定條目? – WannaCSharp

+0

@WannaCSharp,是編輯特定記錄。 –

回答

2

從控制器嘗試此

控制器:

var record = db.Records.Find(id); 
ViewBag.DropStatus = new SelectList(ListOfStatus, record.Status); 

爲的SelectList的第一個參數是一個IEnumerable這將作爲你的DropDownList數據源,所述第二參數是所述選定的值,因此只需傳遞要編輯的記錄的狀態屬性即可。

查看:

@Html.DropDownList("Status", string.Empty) 

第一個參數是我們在控制器分配ViewBag的名字,它也將在您發佈的數據作爲名稱。希望我已經說清楚了。

1

下面是一些可能的解決方案

@{ 
    ViewBag.Title = "Index"; 
    Func<char, MvcHtmlString> function = (c) => Model != null && Model.Status == c 
    ? MvcHtmlString.Create("selected='selected'") 
    : MvcHtmlString.Empty; 
} 

<h2>Index</h2> 

<select id="drpStatus" name="status"> 
    <option @function('A') value="A">Active</option> 
    <option @function('S') value="S">Suspended</option> 
    <option @function('T') value="T">Terminated</option> 
    <option @function('D') value="D">Deleted</option> 
</select> 

這將是更好的在你的視圖模型使用SelectList之一。

0

另一種可能的解決方案是使用Razor的助手標籤在CSHTML:

@helper SetGender(string dropdownvalue) 
{ 
    var selected = string.Format("value=\"{0}\"", dropdownvalue); 
    if ((string.IsNullOrEmpty(dropdownvalue) && string.IsNullOrEmpty(User.GetClaim(ClaimTypes.Gender.ToString()))) || 
     (User.GetClaim(ClaimTypes.Gender.ToString()) == dropdownvalue)) 
    { 
     selected = string.Concat("selected='selected' ", selected); 
    } 

    @Html.Raw(selected); 
} 

<select name="gender"> 
    <option @SetGender("") >-not set-</option> 
    <option @SetGender("male") >male</option> 
    <option @SetGender("female") >female</option> 
</select> 
0

@{ 
 
    List<SelectListItem> lstOrderTypes = new List<SelectListItem>(); 
 
    lstOrderTypes.Add(new SelectListItem {Value = "1", Text = "plan1" }); 
 
    lstOrderTypes.Add(new SelectListItem {Value = "2", Text = "plan2" }); 
 
} 
 
@functions { 
 
    public static string GetString(IHtmlContent content) 
 
    { 
 
     var writer = new System.IO.StringWriter(); 
 
     content.WriteTo(writer, HtmlEncoder.Default); 
 
     return writer.ToString(); 
 
    } 
 
} 
 

 
@{ 
 
    var x = GetString(Html.DisplayFor(model => model.OrderType)); 
 
} 
 

 
<select> 
 
    @foreach (SelectListItem option in lstOrderTypes) 
 
    { 
 
     <option value="@option.Value" selected="@(option.Value == x)">@option.Text</option> 
 
    } 
 
</select>

+0

歡迎來到SO。你能清理格式並添加幾行解釋嗎? – yacc

相關問題