在视图中创建DropDownListFor项

Sam*_*pat 5 asp.net-mvc html.dropdownlistfor

我想创建一个DropDownList,其中包含我的一个模型数据的绑定,但我希望在View中构建下拉项,我不希望项目来自Model数据或来自我的控制器.你能否建议如何在View中构建选择列表基本上我想创建这样的东西:

<%= Html.DropDownListFor(model=>model.SomeProperty,<<create the dropdown list items here>> %>
Run Code Online (Sandbox Code Playgroud)

请建议.

-Sampat.

Pan*_*yay 6

你不能这样使用它.顾名思义,它用于为使用指定列表项和HTML属性的指定表达式表示的对象中的每个属性返回HTML select元素.

虽然您可以在视图中创建此列表对象,如下所示: -

@Html.DropDownListFor(model => model.DropDownElement, 
                       new SelectList(model.DropDownElement, "Id", "Name"))
Run Code Online (Sandbox Code Playgroud)

更新

我将以具有Id/Name对的Country Model为例.喜欢以下

public class Country 
{
    public int Id { get; set; }
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在,在您的控制器操作中,您可以将其作为选择列表传递:

public ActionResult YourAction()
{
    YourModel yourModel = new YourModel(); // Just for reference. I suppose you must be passing some model to your view
    ViewBag.DropDownList = new SelectList(db.Countries, "Id", "Name"); // This way you don't need to make any changes with your passing model.
    return View(yourModel);
}
Run Code Online (Sandbox Code Playgroud)

最后在View中,您可以按以下方式使用DropDownListFor.

@Html.DropDownListFor(model => model.YourModelProperty, 
   (IEnumerable<SelectListItem>)ViewBag.DropDownList, "---Select a value---") 
Run Code Online (Sandbox Code Playgroud)

在旁注中,如果您只想显示具有值的数字列表,则可以直接输入HTML并使用它,而不是使用DropDownListFor.喜欢跟随

<select id="yourModelPropertyName" name="yourModelPropertyName">
   <option value="">---Select Value---</option>
   <option value="1">India</option>
   <option value="2">Australia</option>
   <option value="3">US</option>
   <option value="4">England</option>
   <option value="5">Finland</option>
</select>
Run Code Online (Sandbox Code Playgroud)

只需确保"yourModelPropertyName"是正确的,它应该是您想要更新的属性的那个

更多更新

在您不想显示所选值的视图中,使用以下代码

<select id="yourModelPropertyName" name="yourModelPropertyName">
   <option selected="selected" value="1">@model.YourDropDownList</option>
   <option value="2">India</option>
   <option value="3">Australia</option>
</select>
Run Code Online (Sandbox Code Playgroud)

这应该做的伎俩:-)