2013-08-20 90 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

相关问题