Razor的@ Html.Action

时间:2011-10-22 10:24:29

标签: c# visual-studio-2010 asp.net-mvc-3

我正在尝试在我的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的方法?

2 个答案:

答案 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);

我在记事本中写了这个,所以可能存在语法错误。