将HTML.DropDownList帮助器与视图模型和Ajax一起使用

时间:2012-02-03 14:30:47

标签: ajax asp.net-mvc drop-down-menu viewmodel asp.net-mvc-partialview

我正在尝试使用带有ajax的强类型视图模型的html.dropDownList帮助器。由于项目的性质,我无法发布代码。

这基本上就是我在做什么......

  • 通过强类型视图模型加载mvc视图
  • 单击执行ajax发布到控制器方法的按钮
  • 使用TryUpdateModel解析视图模型
  • 处理请求
  • 渲染ajax请求的parital视图

根据下面列出的文章,问题是“ASP.NET MVC假设如果你是为了响应HTTP POST而呈现一个View,并且你正在使用Html Helpers,那么你最有可能是'重新显示验证失败的表格'。“

http://blogs.msdn.com/b/simonince/archive/2010/05/05/asp-net-mvc-s-html-helpers-render-the-wrong-value.aspx

我需要在视图模型中将html.dropDownList设置为相同的值,而不是“重新显示相同的表单值”。

有没有人知道任何自定义dropDownList助手,或者对如何实现这一点有任何想法?

我已经尝试/考虑过的事情

  • 根据博客,手动删除模型状态项...不起作用 - 没有在视图模型中获取值 - 只是默认为下拉列表中的第一项

  • 只考虑编写一个常规选择列表......但由于我在循环中重新发送多个选择列表,所以这很麻烦而且很麻烦

  • 编写我自己的自定义dropDownList助手...想避免重新发明轮子

提前致谢

1 个答案:

答案 0 :(得分:0)

我不完全清楚你的问题究竟是什么,但我遇到了类似的问题。我使用了Html.DropDownListFor(,SelectListItem [])帮助器。在回发时,它将值设置为选择的值。您的回发视图不需要包含原始模型的所有字段。

@Html.DropDownListFor(model => model.SelectedValue, MyModels.DropDownSelectables());

这里我希望选择的值作为model.SelectedValue变量,在我的(单独的)模型中,我创建了一个selectlistitems数组。其余的是自动化的。

希望它有所帮助,D