我正在使用
ViewBag.Something = session.Query<Something>().ToList();
将类Something中的信息传递给View并在selectList
中使用它@ Html.DropDownListFor(model =&gt; model.model,new SelectList(ViewBag.Something,“Id”,“name”),“ - Something - ”)
那不好吗?我怎样才能改变它?
答案 0 :(得分:0)
我更喜欢将所有属性添加到视图模型中,但ViewBag可用于添加不太适合模型的内容。它在绑定到布局中的元素时也很有用,因为它无法访问视图模型。
答案 1 :(得分:0)
这种做法并不是很糟糕,但建议我们在自己的模式下使用List属性。在你的情况下像
public ActinResult YourActionMethod()
{
YourModelObject.Something = session.Query<Something>().ToList();
// And return your view after further code statements
return View(YourModelObject);
}
实际上,您可以创建SelectList
对象,而不是原始列表对象,您可以在其中轻松绑定键和值并将其发送到视图。通过这种方式,您可以一次性添加所有业务并构建模型,并可以从您想要的位置填充它。后来View将只使用该模型而不是应用更多智能。它有很多帮助,因为所有的值都存在于同一个对象下,而不是模型中的某些值和ViewBag中的某些值。
如果您不在多个地方拥有此列表,并且您没有在任何视图中重复使用此模型,那么这种做法也很好。此外,如果您想在视图外访问此属性,例如在布局或某些父视图中消耗您的视图。
您可以查看以下帖子,其中介绍了如何将列表绑定到模型。
<强> Setting default selected value of selectlist inside an editor template 强>