我有一个视图,由顶部、左侧和底部标题以及一个主内容窗格组成。假设在AJAX请求期间,我需要更新顶部、底部和主面板的HTML(左侧标题应保持不变)。
我想知道最好的方法是什么。第一个想法是将主内容面板放入一个部分视图中,并有一个控制器操作返回PartialView。这行不通,因为当操作仅返回主面板的HTML时,无法更新顶部和底部标题。
因此,如果将顶部和底部标题放入各自的部分视图中,则需要我的控制器操作返回多个部分视图。这是否可能或者我完全偏离了轨道?
我看到可以将部分视图呈现为字符串,所以我认为我可以在操作中使用这种技术,返回一个JSON对象,其中包含3个属性,表示我需要更新的3个部分的HTML。但是,如果可能的话,这种方法对我来说感觉非常错误。
我另一个想法是只返回一个包含部分所需数据的JSON对象,并使用javascript构建HTML。但是,在javascript中构建UI似乎是一项困难的工作(主内容部分使用MvcContrib的GridView进行分页和排序)。
我想知道最好的方法是什么。第一个想法是将主内容面板放入一个部分视图中,并有一个控制器操作返回PartialView。这行不通,因为当操作仅返回主面板的HTML时,无法更新顶部和底部标题。
因此,如果将顶部和底部标题放入各自的部分视图中,则需要我的控制器操作返回多个部分视图。这是否可能或者我完全偏离了轨道?
我看到可以将部分视图呈现为字符串,所以我认为我可以在操作中使用这种技术,返回一个JSON对象,其中包含3个属性,表示我需要更新的3个部分的HTML。但是,如果可能的话,这种方法对我来说感觉非常错误。
我另一个想法是只返回一个包含部分所需数据的JSON对象,并使用javascript构建HTML。但是,在javascript中构建UI似乎是一项困难的工作(主内容部分使用MvcContrib的GridView进行分页和排序)。
所以我希望您能提出关于处理这种情况最干净的方法的建议。同时,一个自适应的解决方案也是很好的:例如,如果用户禁用了JavaScript,则会在没有AJAX的情况下重新加载整个页面。
更新:
Andrew Siemer 建议 将每个部分放入自己的局部视图中,并执行多个ajax请求。这似乎是一个完全有效的方法,但不幸的是,在我的情况下,它并不适用,因为我在初始问题描述中忽略了以下细节:顶部标题实际上用于显示发生在主面板中的错误/信息消息。例如,如果在获取主面板模型时抛出异常,则需要显示错误消息。因此,只能进行单个请求以更新这两个面板。