我想创建一个DropDownList,其中包含我的一个模型数据的绑定,但我希望在View中构建下拉项,我不希望项目来自Model数据或来自我的控制器。您能否建议如何在View中构建选择列表 基本上我想创建这样的东西:
<%= Html.DropDownListFor(model=>model.SomeProperty,<<create the dropdown list items here>> %>
请建议。
-Sampat。
答案 0 :(得分:6)
你不能那样使用它。顾名思义,它用于使用指定的列表项和HTML属性为对象中的每个属性返回HTML select元素。
虽然您可以在视图中创建此列表对象,如下所示: -
@Html.DropDownListFor(model => model.DropDownElement,
new SelectList(model.DropDownElement, "Id", "Name"))
<强>更新强>
我将以具有Id / Name对的Country Model为例。喜欢以下
public class Country
{
public int Id { get; set; }
public string Name { get; set; }
}
现在,在您的控制器操作中,您可以将其作为选择列表传递:
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);
}
最后在View中,您可以按以下方式使用DropDownListFor。
@Html.DropDownListFor(model => model.YourModelProperty,
(IEnumerable<SelectListItem>)ViewBag.DropDownList, "---Select a value---")
在旁注中,如果您只想显示具有值的数字列表,则可以直接输入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>
只需确保“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>
这可以解决问题: - )
答案 1 :(得分:1)
IEnumerable
SelectListItem
对象对象从控制器传递到您的视图,并根据该元素创建您的选择元素。
这是一个很好的例子:
A Way of Working with Html Select Element (AKA DropDownList) In ASP.NET MVC
想象一下你的控制器看起来像这样:
public ActionResult Index() {
var products = productRepo.GetAll();
registerProductCategorySelectListViewBag();
return View(products);
}
private void registerProductCategorySelectListViewBag() {
ViewBag.ProductCategorySelectList =
productCategoryRepo.GetAll().Select(
c => new SelectListItem {
Text = c.CategoryName,
Value = c.CategoryId.ToString()
}
);
}
在你的观点上,DropDownListFor
html助手应该是这样的:
@Html.DropDownListFor(m => m.CategoryId,
(IEnumerable<SelectListItem>)ViewBag.ProductCategorySelectList
)