在 ASP.NET MVC 中创建下拉列表
Creating a Drop Down List in ASP.NET MVC
我有一个 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 帮手,但我完全不知道该怎么做。我如何只显示下拉列表并将其绑定回我的模型?我已经成功绑定到文本框,所以我知道我的管道设置正确。只是这个下拉列表让我陷入了循环。
谢谢!
假设您传递给 .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>
小工作片段:
@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 list)
您可以将这种方式用于下拉列表..
在你的控制器中
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 = "" })
我有一个 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 帮手,但我完全不知道该怎么做。我如何只显示下拉列表并将其绑定回我的模型?我已经成功绑定到文本框,所以我知道我的管道设置正确。只是这个下拉列表让我陷入了循环。
谢谢!
假设您传递给 .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>
小工作片段:
@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 list)
您可以将这种方式用于下拉列表..
在你的控制器中
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 = "" })