剃刀DDL到模型
本文关键字:模型 DDL 剃刀 | 更新日期: 2023-09-27 17:52:37
我正试图让我的头周围下拉列表与MVC,这似乎是失败的我。我一直在修修补补下面的代码,但不能得到正确的
我想要实现的很简单-硬编码一些下拉选项在控制器中,让他们出现在Razor渲染的html中,当一个选项被选中时,所选择的值被绑定回模型中的字符串属性。
使用下面的代码,我无法从视图中访问li
。
我看过其他指南,但我还没能使它工作,是绑定模型对我来说是最好的选择,考虑到我想要实现的,或者ViewBag等会更好?
谁能告诉我哪里错了?public class ViewModel {
public string MyOption { get; set; } }
<<p> 视图/strong> @model ViewModel
@Html.DropDownListFor(m => m.MyOption, li, "--Select--")
控制器public ActionResult Index()
{
List<SelectListItem> li = new List<SelectListItem>();
li.Add(new SelectListItem { Text = "Option One", Value = "option1" });
li.Add(new SelectListItem { Text = "Option Two", Value = "option2" });
return View(li);
}
如果您想使用它,则需要将MyOption
传递给view。一个有效的选择是创建一个视图模型类,其中包含在视图上需要处理的所有信息
ViewModel
public class ViewModel
{
public IList<SelectListItem> ItemList {get; set;}
public string MyOption { get; set; }
}
<<p> 视图/strong> @Html.DropDownListFor(m => m.MyOption, Model.ItemList, "--Select--")
控制器public ActionResult Index()
{
var li = new List<SelectListItem>();
li.Add(new SelectListItem { Text = "Option One", Value = "option1" });
li.Add(new SelectListItem { Text = "Option Two", Value = "option2" });
var viewModel = new ViewModel
{
ItemList = li,
MyOption = [here your code to fill this]
}
return View(viewModel);
}
您需要确保您在视图中声明了您的模型,以便访问该模型的任何属性或修饰符
@model Namespacehere.Models.modelclassname
那么你应该能够使用像
这样的东西@Html.DropDownListFor(m => m.MyOption, model, "--Select--")