如何在发布后更新@ Html.DropDownList

时间:2014-06-04 16:20:39

标签: asp.net-mvc

在我的MVC应用程序中,我需要在帖子后更新DropDownList中的值。

我的观点:

 @{
 IEnumerable<MyModel.MySelectItem> mylist= ViewBag.MyList;
 }

 @using (Ajax.BeginForm(...........)
 {
 @Html.DropDownList("myselection", mylist.ToSelectList(p => p.Description, p => p.Description), "Select Item")
  ....Other controls and a submit button are here...
 }

我的控制器:

 //Populate list in Index()
 ViewBag.MyList = myGeneratedList;
 return View();

最初显示视图时,DropDownList将填充正确的值。

这是post方法:

public ActionResult GetData()
{
 ActionResult result = null;     

//Query data...
ViewBag.MyList = myNEWGeneratedList;

//Need to display a table of results and update DropDownList
var myTableResults = GetSomeData();
result = PartialView("_MyTableResultsView", myTableResults);
return results; 
}

当表单回发时,部分视图显示它的结果正常,但DropDownList不会更新。 如何在视图中让DropDownList在帖子后更新?

1 个答案:

答案 0 :(得分:0)

Ajax.beginform将根据UpdateTargetId参数的值更新特定控件。如果您的下拉列表不在目标控件内,则不会更改。如果它在目标控件中,则将使用部分视图中返回的内容进行更新或覆盖。

如果您希望您的下拉列表在返回的部分视图或UpdateTarget之外更新,您很可能会使用javascript或jquery来更新它的客户端。

另一种选择是使用HTML.beginform,它将发出整页回发(刷新所有内容),但是您的控制器需要更新以返回包含更新的下拉列表的视图以及当前局部视图中的代码