使用Razor视图在asp.net mvc 3中创建带有预定义值的下拉菜单
本文关键字:创建 预定义 下拉菜单 视图 Razor asp mvc net 使用 | 更新日期: 2023-09-27 18:12:18
我正在制作一个窗体的部分视图。在其中,我想使用3个值显示一个下拉菜单,例如:
<td>
@Html.DropDownList("Yes", "No", "Not Applicable")
</td>
显然我不能硬编码这样的值,但这就是想法。我将只在这个视图中使用这个下拉,所以如果可能的话,我想保持这里的逻辑,唯一的事情是我想跟踪选定的值,所以我想添加一些隐藏的值,比如Id
。在我看来,有办法做到这一点吗?我想过传递一个ViewBag参数或类似的东西,但我真的认为必须有一个更优雅的解决方案。
ViewData["myList"] =
new SelectList(new[] { "10", "15", "25", "50", "100", "1000" }
.Select(x => new {value = x, text = x}),
"value", "text", "15");
那么在你看来:
@Html.DropDownList("myList")
或者你可以使用linq来生成选择列表
IList<Customer> customers = repository.GetAll<Customer>();
IEnumerable<SelectListItem> selectList =
from c in customers
select new SelectListItem
{
Selected = (c.CustomerID == invoice.CustomerID),
Text = c.Name,
Value = c.CustomerID.ToString()
};
在你的例子中:
List<SelectListItem> ls = new List<SelectListItem>();
ls.Add(new SelectListItem() { Text = "Yes", Value = "true", Selected = true });
ls.Add(new SelectListItem() { Text = "No", Value = "false", Selected = false });
ls.Add(new SelectListItem() { Text = "Not Applicable", Value = "NULL", Selected = false });
ViewData["myList"] = ls;
如果您只在View
中需要这些数据,则可以不使用帮助程序编写:
<select name="PropertyName" id="PropertyName">
<option value="Yes">Yes</option>
<option value="No">No</option>
<option value="Not Applicable">Not Applicable</option>
</select>
和选择项目jquery
或
@Html.DropDownList(
"PropertyName",
new SelectList(
(new List {"Yes", "No", "Not Applicable"}).Select(x => new { Value = x, Text = x }),
"Value",
"Text",
"SelectedValue"
)
)
或
<select name="PropertyName" id="PropertyName">
@{string[] list = new string[] { "Yes", "No", "Not Applicable" };}
@foreach (var item in list)
{
<option @if(item == "SelectedValue") { <text>selected="selected"</text> } value="@item">@item</option>
}
</select>