【发布时间】:2011-08-25 15:26:25
【问题描述】:
我有一个由顶部、左侧和底部标题和一个主要内容窗格组成的视图。假设在 AJAX 请求期间,我需要更新顶部、底部和主面板的 HTML(左侧标题应保持不变)。
我想知道实现这一点的最佳方法是什么。第一个想法是将主内容面板放入一个局部面板,并有一个控制器操作将返回 PartialView。这不起作用,因为该操作仅返回主窗格的 HTML,我无法更新顶部和底部标题。
因此,如果我将顶部和底部标题放入它们各自的局部视图中,我将需要我的控制器操作来返回多个局部视图。这是可能的,还是我正在做一些完全偏离轨道的事情?
我看到render a partial view to a string 是可能的,所以我认为我可以在操作中使用这种技术来返回一个 JSON 对象,该对象具有 3 个属性,代表我需要更新的 3 个部分的 HTML。但如果可能的话,这对我来说是一种非常错误的方法。
我的另一个想法是返回一个仅包含部分所需数据的 JSON 对象,并使用 javascript 来构造 HTML。但是在 javascript 中构建 UI 看起来是一项艰巨的工作(主要内容部分使用 MvcContrib 的 GridView 进行分页和排序)。
因此,我非常感谢有关处理这种情况的最干净方法的建议。自适应解决方案也很棒:例如,如果用户有 javascript禁用它只会重新加载没有AJAX的整个页面。
更新:
Andrew Siemersuggested 将每个部分放入自己的局部视图并执行多个 ajax 请求。这似乎是一种完全有效的方法,但不幸的是,它不适用于我的场景,因为我在最初的问题描述中遗漏了以下细节:顶部标题实际上用于显示主面板中发生的事件的错误/信息消息。因此,例如,我需要显示错误消息,以防在获取主面板的模型时引发异常。因此,为了更新这两个面板,只能发出一个请求。
【问题讨论】:
-
你能看看这个吗:stackoverflow.com/questions/7086440/… 请(不知道如何直接联系你):) thnx
标签: jquery asp.net-mvc ajax