我的模型类中有以下代码:-
public class PageOptions
{
public PageOptions()
{
int size = Int32.Parse(System.Web.Configuration.WebConfigurationManager.AppSettings["TechPageSize"]);
NameSelectionOptions = new SelectList(
new List<SelectListItem> {
new SelectListItem { Text=size.ToString(), Value = size.ToString()},
new SelectListItem { Text="50", Value = "50"},
new SelectListItem { Text="100", Value = "100"},
new SelectListItem { Text="200", Value = "200"},
new SelectListItem { Text="500", Value = "500"}
}, "Value", "Text");
}
public SelectList NameSelectionOptions { get; set; }
}
}
但是如何在 Html.DropDownList 中显示 SelectList?并将默认值设置为大小? 谢谢
最佳答案
您只需将所需的选择作为第四个参数传递给 SelectList
构造函数:
NameSelectionOptions = new SelectList(
new List<SelectListItem> {
new SelectListItem { Text=size.ToString(), Value = size.ToString()},
new SelectListItem { Text="50", Value = "50"},
new SelectListItem { Text="100", Value = "100"},
new SelectListItem { Text="200", Value = "200"},
new SelectListItem { Text="500", Value = "500"}
}, "Value", "Text", size); // <<< Add size here
这比在列表中选择特定项目要灵活得多。
有几个选项可以将列表绑定(bind)到 View 。您可以在 ViewModel 中使用属性,但是标准做法(根据 Microsoft 的脚手架模板)是将下拉列表传递给 ViewBag 条目中的 View ,与 Model 属性同名。这有一个额外的好处,可以自动将更简单的 @Html.DropDownList("Size")
版本绑定(bind)到名为 Size
的模型属性和 ViewBag 中的列表。尺寸
。
例如
在 Controller 中:
ViewBag.Size = new SelectList(
new List<SelectListItem> {
new SelectListItem { Text=size.ToString(), Value = size.ToString()},
new SelectListItem { Text="50", Value = "50"},
new SelectListItem { Text="100", Value = "100"},
new SelectListItem { Text="200", Value = "200"},
new SelectListItem { Text="500", Value = "500"}
}, "Value", "Text", size); // <<< Add size here
viewModel.Size = size;
return View(viewModel);
其中 viewModel 包含您要编辑的任何属性(包括 Size
)。
在 View 中:
@Html.DropDownList("Size")
或者如果您更喜欢强类型版本。
@Html.DropDownListFor(m=>m.Size, (SelectList)ViewBag.Size)
无论如何,一致的命名将有助于避免出现问题。
默认值可以放在 ViewBag 中,但选择应该绑定(bind)到您的 ViewModel,这样您就可以使用相同的 ViewModel 来接收回发的值。
@Html.DropDownListFor(m=>m.Size, (SelectList)ViewBag.Size, ViewBag.DefaultSize)
更新:
如果您不希望将当前值绑定(bind)到任何东西(根据评论),您只需将 ViewBag.Size
设置为您的 SelectList
Controller ,这就是 View 。您不需要模型中的值。
@Html.DropDownList("Size")
默认选择将是上面 new SelectList()
中的选择(第 4 个参数,大小)。
关于asp.net-mvc-4 - 在 SelectList 上使用 Html.DropDownList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23494316/