C# ASP.NETMVC部分视图和路由
我有一个MVC视图,其中包含许多局部视图。这些部分视图是使用部分请求填充的,因此视图的控制器本身不会向它们传递任何数据。如果在另一个局部视图中触发了操作,是否可以在其中一个局部视图中重新加载数据?例如,一个局部视图有一个jqGrid,当用户在此网格中选择新行时,我希望刷新另一个局部视图中的数据。 有没有这个场景的代码示例(用C#)可以让我看看我做错了什么?我正在使用ajax调用来触发一个新的请求,但是没有一个部分视图被刷新,所以我不确定问题是否出在路由、控制器上,或者这是否可能!C# ASP.NETMVC部分视图和路由,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我有一个MVC视图,其中包含许多局部视图。这些部分视图是使用部分请求填充的,因此视图的控制器本身不会向它们传递任何数据。如果在另一个局部视图中触发了操作,是否可以在其中一个局部视图中重新加载数据?例如,一个局部视图有一个jqGrid,当用户在此网格中选择新行时,我希望刷新另一个局部视图中的数据。 有没有这个场景的代码示例(用C#)可以让我看看我做错了什么?我正在使用ajax调用来触发一个新的请求,但是没有一个部分视图被刷新,所以我不确定问题是否出在路由、控制器上,或者这是否可能! 谢谢 如果部分
谢谢 如果部分视图操作返回ViewResult,则响应包含一个HTML块。但是,Ajax调用不会自动将结果插入DOM,因为结果可以是任意数量的格式,并且/或者在更新DOM之前可能需要额外的处理。因此,为了刷新局部视图,需要获取Ajax调用的结果并将其插入DOM树中的正确位置 jQuery有一个漂亮的方法,可以为您封装这个过程。它将进行Ajax调用,获取结果并替换所选元素的内部HTML。如果您需要以任何方式转换结果,甚至可以在将其插入DOM树之前将其传递给您自己的要执行的函数 旁注:
jQuery.load()
。它确实会在某些场景中保留它们以供执行,但在其他场景中甚至不会执行它们。因此,如果您的部分视图包含脚本,您可能会考虑自己更新DOM树。
所有这些都与在服务器端运行的C#代码无关
但是,通过检查请求是否为纯HTML,您确实能够使您的操作变得更智能,因此结果将由浏览器直接呈现,或者如果是Ajax调用,结果将在进入DOM之前由脚本处理。此检查使用
请求
扩展方法完成。如果部分视图操作返回ViewResult,则响应包含一个HTML块。但是,Ajax调用不会自动将结果插入DOM,因为结果可以是任意数量的格式,并且/或者在更新DOM之前可能需要额外的处理。因此,为了刷新局部视图,需要获取Ajax调用的结果并将其插入DOM树中的正确位置
jQuery有一个漂亮的方法,可以为您封装这个过程。它将进行Ajax调用,获取结果并替换所选元素的内部HTML。如果您需要以任何方式转换结果,甚至可以在将其插入DOM树之前将其传递给您自己的要执行的函数
旁注:jQuery.load()
。它确实会在某些场景中保留它们以供执行,但在其他场景中甚至不会执行它们。因此,如果您的部分视图包含脚本,您可能会考虑自己更新DOM树。
所有这些都与在服务器端运行的C#代码无关
但是,通过检查请求是否为纯HTML,您确实能够使您的操作变得更智能,因此结果将由浏览器直接呈现,或者如果是Ajax调用,结果将在进入DOM之前由脚本处理。此检查使用请求
扩展方法完成