MVC:动态填充html选择

时间:2012-11-23 02:11:49

标签: asp.net-mvc html.dropdownlistfor html-select

我有一个为视图中的每一行生成的字段,如下所示:

@Html.DropDownListFor(m => m.MenuParentKey, ViewBag.MenuKeys as SelectList)      

但是我想通过调用控制器中的动作来单独填充每一行的下拉列表,这就是我的意思:

public ActionResult GetMenuKeys(string currentMenuKey)
{
  var dictionary = MenuKeys.Where(mk => mk.Key != currentMenuKey);

  return View(new SelectList(dictionary,
      "Key",
      "Value",
      Page.DefaultParentKey));
}
应该根据当前行提供

currentMenuKey,我希望从下拉列表中排除当前行的值(注意它是父键属性)。 / p>

1 个答案:

答案 0 :(得分:1)

您可以创建一个将返回SelectList的助手。

这样您就可以直接从视图中调用它,您也可以根据需要传递参数。

我认为这比在你的控制器上调用一个动作更容易。

从我在这里看到的情况来看,控制器动作不会获取除列表之外的任何其他资源。

你可以选择这样的东西:

public static SelectList FilteredList( this HtmlHelper helper, MenuKeys keys, string CurrentMenuKey)
{
var dictionary = MenuKeys.Where(mk => mk.Key != currentMenuKey);

  return new SelectList(dictionary,
      "Key",
      "Value",
      Page.DefaultParentKey);
}

然后你可以这样称呼它:

@Html.DropDownListFor(m => m.MenuParentKey, Html.FilteredList(ViewBag.MenuKeys as SelectList, m.currentKey))