【问题标题】:Using the HTML.DropDownList helper with view model and Ajax将 HTML.DropDownList 助手与视图模型和 Ajax 一起使用
【发布时间】:2012-02-03 14:30:46
【问题描述】:

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

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

  • 通过强类型视图模型加载 mvc 视图
  • 单击一个按钮,该按钮将 ajax 发布到控制器方法
  • 使用 TryUpdateModel 解析视图模型
  • 处理请求
  • 为 ajax 请求呈现部分视图

根据下面列出的文章,问题在于“ASP.NET MVC 假定如果您正在呈现视图以响应 HTTP POST,并且您正在使用 Html 帮助程序,那么您很可能正在‘重新显示验证失败的表单’。”

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

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

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

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

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

    李>
  • 考虑过只写一个常规的选择列表……但这很草率而且很麻烦,因为我要在一个循环中渲染多个选择列表

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

提前致谢

【问题讨论】:

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


    【解决方案1】:

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

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

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

    希望对你有帮助,D

    【讨论】:

    • 我正在使用 MVC v2.0.50727 工作的项目,它没有 Html.DropDownListFor 方法。问题是 html.dropDownList 的值未设置为在为 ajax 请求返回部分视图后视图模型中的值。 @DerDee
    • 好的,我刚刚编写了自己的帮助下拉列表扩展。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-27
    • 2011-11-12
    • 1970-01-01
    • 2022-07-19
    相关资源
    最近更新 更多