【问题标题】:MVC jQuery Reorder list not ordered on postbackMVC jQuery Reorder 列表未在回发时排序
【发布时间】:2011-02-15 17:45:30
【问题描述】:

我是 MVC 的新手,从版本 3 开始。我遇到了 MVC3 附带的 jQuery 重新排序列表的问题。

视图从我的模型的枚举中呈现:

@using (Html.BeginForm())
{

    <ul id="questionlist" class="ReorderList">
        @for (int i = 0; i < data.Count(); i++)
        {
            <li>
                <span class="dragHandle"></span>
                @Html.HiddenFor(x => data[i].ID)
                @Html.HiddenFor(x => data[i].DisplayOrder)
                @Html.TextBoxFor(x => data[i].QuestionText)
            </li>
        }
    </ul>

    <input type="submit" value="Save" />
}

当页面加载 jquery 时 init 就在列表中:

<script type="text/javascript">
    $(document).ready(function () {
        var unordered = $("#questionlist").sortable({
            axis: 'y',
            update: listUpdated });
    });

    function listUpdated(event, ui) {
        $('input[name$="DisplayOrder"]').each(function (index) { this.value = index; });
    }
</script>

正如您在订单更新后看到的那样,jQuery 正在更新映射到我模型上 DisplayOrder 属性的所有隐藏字段。

调试这个我可以看到值被正确地回传到控制器,业务对象被更新并正确地保存在 SQL Server 中。在表上运行查询,我可以看到所有内容都按应有的方式更新。

当用户单击“保存”按钮时,我的问题出现了,返回的 HTML 是原始顺序,而不是他们更改的顺序。 Fiddler 显示以原始顺序返回的 HTML,但 DisplayOrder 隐藏字段具有正确(更改)的值。 单击屏幕上的导航按钮以刷新视图会以正确的顺序呈现列表。我已经调试了渲染过程,一切似乎都以正确的顺序渲染,我还尝试用 OutputCaching 设置为 false 来装饰控制器,但是当然,它不起作用,因为 DisplayOrder 属性正在渲染正确的值。

我做错了什么让它错误地显示第一个回发,而不是后续的回发?

【问题讨论】:

  • 对,我的意思是说当ActionResult返回视图时,说“回发”更容易。
  • 没有找到任何反馈我决定直接从模型输出 html(未索引)并使用 jquery 构建和发布 json 更新到控制器,而不是让 MVC 引擎尝试从发布的键值对重建对象模型。
  • 同样的问题,但我正在寻找一个不太复杂的解决方案,否则我可能会忘记在回发期间对服务器端的记录进行排序!

标签: jquery asp.net-mvc razor


【解决方案1】:

实际上,由于 HTML Helpers & MVC 的处理模型,我得出在回发期间不可能更改模型。

我可能没有正确使用这些词,所以最好自己看看 -

How to modify posted form data within controller action before sending to view?

原文链接: http://www.gxclarke.org/2010/05/consumption-of-data-in-mvc2-views.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多