我正在尝试使用下拉菜单修复 MVC2 页面上的错误。我的问题是,提交表单后,我在模型服务器端更改了下拉列表的值,但是当再次呈现视图时,未选择新值。
我在视图中定义了我的下拉列表,如下所示。
<%= Html.DropDownListFor(m => m.MyValueId, MyHelperClass.GetMyDropdown())%>
我有一个帮助类来生成我的下拉列表,函数看起来像这样。
public static List<SelectListItem> GetMyDropdown()
{
List<SelectListItem> options= new List<SelectListItem>();
options.Add(new SelectListItem { Text = "None", Value = string.Empty });
options.Add(new SelectListItem { Text = "MyValue", Value = "1" });
//and more options added in the same way
}
在我的视图页面上,我还有一个提交按钮,允许用户重新计算我的下拉列表的值。当用户单击按钮时,表单被提交,控制器动作如下所示。
[HttpPost]
public ActionResult MyViewName(MyModel model, string submitButton)
{
//check for my submit button value
if(submitButton == "Recalculate")
{
int newValue = 0;
//some logic to set the new value
model.MyValueId = newValue;
}
return View(model);
}
当我调试我的代码时,我可以看到在模型中创建并正确设置了新值。我可以在我的下拉生成方法中看到该列表已正确创建,并且存在具有我的新值的选项。在视图中,我可以调试并查看模型仍然具有正确值,但由于某种原因,下拉菜单始终是第一个选项 - Text =“None”Value =“”。
我试图尽可能地简化我的代码以避免混淆,但如果需要我会更详细地解释。有谁知道为什么会发生这种情况?