我正在尝试在我的asp.net mvc 3应用程序中为我的dropdownlistbox创建一个部分视图。 在我的页面中我有:
@Html.Action("PopulateCombo","ComboController")
controller partialview:
public ActionResult PopulateCombo()
{
//some code here to organise data and maybe some caching
return ItemsForCombo;
}
是否有更好的模板Dropdownlistbox的方法?
答案 0 :(得分:0)
我会填充控制器中的数据,然后将其传递给模型,最后使用Html.DropDownListFor
。我的意思是,这就是MVC代表的地方:)
示例强>
(PS:已经有一段时间了,因为我不再使用c#进行编码,所以对于任何类型的拼写错误道歉)
controller.cs
Public ActionResult ()
{
Model m = new Model();
//populate data into a list
m.Items = ...
return View(m);
}
model.cs
...
Public List<object> Items { get; set; }
index.cshtml
@using Model // I guess it was something like this
// I cant remember the exact order of the arguments to dropdownlistfor, so just figure it out :)
@Html.DropDownListFor (some arguments)
答案 1 :(得分:0)
您有什么要求?部分视图可以表示您可以在整个应用程序中重复使用的控件。我不认为下拉列表是部分视图的良好候选者。
如果我是你,我想显示一个下拉列表,我会使用现有的HTML助手。
在我的控制器中,我会在视图包中存储下拉列表的值:
IList<SelectListItem> selectListItems = new List<SelectListItem>();
// Populate selectListItems
...
// Create a select list. You'll have to replace dataValueField and dataTextField with property names
SelectList mySelectList = new SelectList(selectListItems, "dataValueField", "dataTextField");
// Assume that select list contains a list of countries
ViewBag.Countries = mySelectList;
然后在您的视图中,您可以使用HTML帮助程序
创建下拉列表@Html.DropDownListFor(m => m.CountryId, (SelectList) ViewBag.Countries);
我在记事本中写了这个,所以可能存在语法错误。