jquery - ASP.NET MVC 和 AJAX

标签 jquery asp.net-mvc ajax

我有一个由顶部、左侧和底部标题以及主要内容 Pane 组成的 View 。假设在 AJAX 请求期间我需要更新顶部、底部和主面板的 HTML(左侧标题应保持不变)。

我想知道实现这一目标的最佳方法是什么。第一个想法是将主要内容面板放入部分面板中,并有一个返回 PartialView 的 Controller 操作。这是行不通的,因为该操作仅返回主 Pane 的 HTML,我无法更新顶部和底部标题。

因此,如果我将顶部和底部标题放入各自的部分 View 中,我将需要 Controller 操作来返回多个部分 View 。这是否可能,或者我正在做一些完全偏离轨道的事情?

我发现可以render a partial view to a string所以我认为我可以在操作中使用这种技术来返回一个 JSON 对象,该对象具有 3 个属性,代表我需要更新的 3 个部分的 HTML。但如果可能的话,这对我来说是一种非常错误的方法。

我的另一个想法是返回一个仅包含部分所需数据的 JSON 对象,并使用 javascript 构建 HTML。但是用 javascript 构建 UI 看起来是一项艰巨的工作(主要内容部分使用 MvcContrib 的 GridView 进行分页和排序)。

因此,我非常感谢有关处理这种情况的最简洁方法的建议。另外,自适应解决方案也很棒:例如,如果用户有 javascript 禁用它只会重新加载整个页面而不使用 AJAX。

<小时/>

更新:

Andrew Siemer suggested将每个部分放入其自己的部分 View 中并执行多个 ajax 请求。这似乎是一种完全有效的方法,但不幸的是,它不适用于我的场景,因为我在最初的问题描述中错过了以下细节:顶部标题实际上用于显示主面板中发生的事件的错误/信息消息。例如,我需要显示错误消息,以防在为主面板获取模型时引发异常。因此只需发出一个请求即可更新这两个面板。

最佳答案

您可以轻松地将每个部分放入其自己的部分 View 中。一旦您的数据被提交/更改,这将允许您为每个 View 发出 jquery 请求。然后,每个调用都可以被推送到适当的部分。这是非常可行的,听起来像是合适的路径。

我不希望您的 Controller 返回多个部分 View ...因为这会破坏 SRP!

更新:在更新之后...您仍然可以单独获取这些部分。这只是需要您多一点 ajax 的冷静,因为每次获取都可以返回一个错误 block (通过 JSON 请求)。如果出现任何错误,则这些错误消息可以显示在标题中。或者...一旦所有其他请求都报告回来,您可以使 header 请求持续出现错误,在这种情况下,每个部分 View 都可以将其错误消息传递给错误状态的 session 变量...然后在中显示这些消息标题。

选择每个部分作为其自己的部分而不是一个 super 请求的一个重要原因可能在初始设计中尚不明显。通过单独控制每个部分,您可以做一些奇特的事情,例如独立缓存每个部分,在一个区域中提供比另一个区域更频繁的更新,等等。

关于jquery - ASP.NET MVC 和 AJAX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1096314/

相关文章:

javascript - 如何在每个循环中等待所有回调

javascript - 涉及 jQuery Ajax 请求的内存泄漏

asp.net-mvc - EF Core 中的 SQL Server 排序规则

jquery - Watin 无法打开在 ajax 中完成的反射问题

javascript - 通过key输出JSON对象

javascript - 根据滚动位置交换 div 元素

javascript - 在 Javascript 函数中包含 Razor 格式的字符串

asp.net-mvc - MVC3 区域中的相对内容路径

javascript - Rails 中的 AJAX GET 请求不渲染views/json

javascript - jQuery "slime menu"- 像素完美舍入