Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NETMVC部分视图和路由_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

C# ASP.NETMVC部分视图和路由

C# ASP.NETMVC部分视图和路由,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我有一个MVC视图,其中包含许多局部视图。这些部分视图是使用部分请求填充的,因此视图的控制器本身不会向它们传递任何数据。如果在另一个局部视图中触发了操作,是否可以在其中一个局部视图中重新加载数据?例如,一个局部视图有一个jqGrid,当用户在此网格中选择新行时,我希望刷新另一个局部视图中的数据。 有没有这个场景的代码示例(用C#)可以让我看看我做错了什么?我正在使用ajax调用来触发一个新的请求,但是没有一个部分视图被刷新,所以我不确定问题是否出在路由、控制器上,或者这是否可能! 谢谢 如果部分

我有一个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之前由脚本处理。此检查使用
请求
扩展方法完成