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 selected=@{if(@Model!=null && @Model.Status=='A'){'selected'}} value="A">Active</option>

上面的代码不起作用,请让我知道我是否朝着正确的方向工作,或者是否有任何其他/更好的方法来实现它。

4

4 回答 4

2

从你的控制器试试这个

控制器 :

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

SelectList 的第一个参数应该是一个 IEnumerable,它将作为 DropDownList 的数据源,第二个参数用于选择值,因此只需传递要编辑的记录的状态属性。

看法:

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

第一个参数是我们在控制器中分配的 ViewBag 的名称,它也将作为您发布数据时的名称。希望我已经说清楚了。

于 2013-08-20T17:24:52.620 回答
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在您的 ViewModel 中使用。

于 2013-08-20T17:43:02.313 回答
0

另一种可能的解决方案是在 cshtml 中使用 Razor 的 helper 标签:

@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>
于 2014-09-10T15:06:45.100 回答
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>

于 2017-11-17T23:51:01.593 回答