我有一个ASP.NET MVC 4应用程序。我不是MVC专家。在我看来(.cshtml文件),我有一个我绑定的模型。在我的模型中,我有一个short
值列表,如下所示:
public void Load() {
List<short> options = new List<short>();
options.Add(1);
options.Add(3);
options.Add(7);
this.Options = options;
}
public List<short> Options = new List<short>() { get; set; }
public short? SelectedOption = null;
在我的.cshtml文件中,我需要让用户从下拉列表中选择一个选项。我看到了一堆HTML助手,但我完全不知道如何做到这一点。如何只显示下拉列表并将其绑定回我的模型?我已成功绑定到文本框,所以我知道我的管道设置正确。它就是这个下拉列表,它让我失去了一个循环。
谢谢!
答案 0 :(得分:1)
假设您传递给.cshtml视图的对象是您的列表,可以通过ViewBag
或model
传递。
然后根据您的要求,您可以使用多个内容制作下拉列表,其中最优选的是。
Html.DropDownList
延伸。 Link to MSDN
所以典型的代码是
var options = Model ; //OR Viewbag.Options;
@Html.DropDownList(options.Select(o=>
new SelectListItem()
{
Text = o.ToString(),
Value = o.ToString()}
))
此外,如果你想在没有任何专业助手的情况下这样做 你可以自己创建HTML。
<select>
@foreach(var o in Options){
<option value="@o.ToString()">@o.ToString()</option>
}
</select>
答案 1 :(得分:0)
小型工作片段:
@model SelectListItem
@{
ViewBag.Title = "Index";
Layout = null;
List<SelectListItem> x = new List<SelectListItem>()
{
new SelectListItem { Text = "1", Value = "100", Selected = false },
new SelectListItem { Text = "2", Value = "200", Selected = true }
};
}
<html>
<head>
<title></title>
<script src="~/Scripts/jquery-1.8.2.js"></script>
</head>
<body>
@Html.DropDownListFor(model => model.Text, x)
</body>
</html>
<h2>Index</h2>
以上是视图的代码。在调用View方法时,您可以从控制器传递完整模型,该模型将包含您要显示的元素列表。例如,我只是在飞行中创建它(x列表)
答案 2 :(得分:0)
您可以使用这种方式进行下拉列表..
在您的控制器中
var sample = new List<SelectListItem> { new SelectListItem { Text = "--Select--", Value = "0" }, new SelectListItem { Text = "A", Value = "1" }, new SelectListItem { Text = "B", Value = "2" } };
ViewBag.something = sample;
在您的视图中,
@Html.DropDownListFor(m => m.colname, (List<SelectListItem>)ViewBag.something , null, new { type = "text", Class = "", style = "" })