我的难点是如何将ViewBag
与DropdownListFor
一起使用?
在我的控制器中,我有:
TestModel model = new TestModel();
ViewBag.Clients = model.Clients;
ViewBag.StatusList = model.StatusList;
ViewBag.enumStatus = model.enumStatus;
ViewBag.intClient = model.intClient;
在我的TestModel
中public SelectList Clients { get; set; }
public SelectList StatusList { get; set; }
public ActiveStatus enumStatus { get; set; }
public int? intClient { get; set; }
在我的视图中
我想使用DropDownListFor
来显示ViewBag值,我该怎么做?
答案 0 :(得分:10)
你可以这样做:
@Html.DropDownListFor(x => x.intClient, ViewBag.Clients)
但我建议你避免使用ViewBag / ViewData并从你的视图模型中获利:
public ActionResult Index()
{
var model = new TestModel();
model.Clients = new SelectList(new[]
{
new { Value = "1", Text = "client 1" },
new { Value = "2", Text = "client 2" },
new { Value = "3", Text = "client 3" },
}, "Value", "Text");
model.intClient = 2;
return View(model);
}
并在视图中:
@Html.DropDownListFor(x => x.intClient, Model.Clients)
答案 1 :(得分:9)
个人......我创建一个List并执行此操作。
public ActionResult SomeAction()
{
var list = new List<SelectListItem>();
list.Add(new SelectListItem(){Text = "One", Value="One"});
list.Add(new SelectListItem(){Text = "Two", Value="Two"});
list.Add(new SelectListItem(){Text = "Three", Value="Three"});
list.Add(new SelectListItem(){Text = "Four", Value="Four"});
ViewBag.Clients = list;
return View();
}
然后在你看来...
@Html.DropDownListFor(x => x.SomePropertyOnModel, (IEnumerable<SelectListItem>)ViewBag.Clients);
注意Viewbag项目的强制转换。强制转换是必需的,因为viewbag不知道Viewbag.Client
的对象是什么。所以演员阵容是必需的。
答案 2 :(得分:2)
@Html.DropDownListFor(x => x.intClient, new SelectList(Model.Clients, "ClientId", "ClientName"), string.Empty);
ClientId是下拉选项的值。
ClientName是下拉选项的文本。
最后的string.Empty
会在下拉列表中添加一个空白条目。
答案 3 :(得分:0)