Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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# 当在局部视图中异步加载时,mvc2中的链接将停止正确遵循虚拟路径_C#_Asp.net Mvc_Asp.net Mvc 2_Asynchronous_Partial Views - Fatal编程技术网

C# 当在局部视图中异步加载时,mvc2中的链接将停止正确遵循虚拟路径

C# 当在局部视图中异步加载时,mvc2中的链接将停止正确遵循虚拟路径,c#,asp.net-mvc,asp.net-mvc-2,asynchronous,partial-views,C#,Asp.net Mvc,Asp.net Mvc 2,Asynchronous,Partial Views,我在一个大型MVC2应用程序中遇到了一些边缘问题。最初,我只有一个主视图,在加载时加载部分视图,其中包含链接。我有一个本地工作环境,它使用项目设置页面中的空虚拟路径设置,还有一个临时环境(为了更好地反映多应用程序生产环境),它有一个特定于应用程序的虚拟路径。所有的信号都在这两个方面都很好。最近,我有理由将部分视图加载从页面加载切换到异步加载。没有其他变化。这些链接继续在本地运行,但当移动到登台时,忽略了添加特定于应用程序的路径设置,导致所有链接都断开。我能够找到一个解决办法,基于使用一个更彻底的

我在一个大型MVC2应用程序中遇到了一些边缘问题。最初,我只有一个主视图,在加载时加载部分视图,其中包含链接。我有一个本地工作环境,它使用项目设置页面中的空虚拟路径设置,还有一个临时环境(为了更好地反映多应用程序生产环境),它有一个特定于应用程序的虚拟路径。所有的信号都在这两个方面都很好。最近,我有理由将部分视图加载从页面加载切换到异步加载。没有其他变化。这些链接继续在本地运行,但当移动到登台时,忽略了添加特定于应用程序的路径设置,导致所有链接都断开。我能够找到一个解决办法,基于使用一个更彻底的地址,但我觉得一定有某种配置设置,我遗漏了,这将解决这个问题

更清楚地说(我意识到前面的内容可能有点不清楚),只有在以下情况均为真时,才会出现此特定错误:

  • 包含链接的部分视图必须通过asych get调用和jquery
    .html()
    函数放置到位。当MVC将其直接加载到页面中时,一切正常
  • 必须位于虚拟路径设置为非空的服务器上。这里的问题不知何故来自于没有从虚拟路径设置中追加字符串。事实上,如果您在生成的链接的适当位置手动输入虚拟路径,它们就可以正常工作
  • 至少就部分视图调用而言,它必须采用
    PartialView(“partialViewName”,dataObject)
    的形式,而不是
    PartialView(“~/Areas/appName/Views/controllerName/partialViewName.ascx”,dataObject)
    。以较长的格式交换确实有效

诚然,我可以通过反复尝试找到一些方法,将较长的名称替换为内部链接,让所有内容或多或少都能正常工作,但这不是一个非常干净的解决方案,我可能需要在将来的其他地方再次做同样的事情,我觉得一定有更好的答案。无论出于何种原因,
PartialView()
调用似乎无法执行某种链接消息处理,
View()
调用(在原始非异步版本中围绕所有内容)正在自动处理。有人知道我能做些什么来告诉异步调用的
partialView()
应用与基本
View()
相同的虚拟路径吗?

我已经找到了答案。异步服务的部分视图中的相对链接似乎基于调用它们的
.post()
所使用的链接,而且,至少在某些情况下,MVC设法更宽容post调用,而不是从它们开始的链接。更改get call地址以正确覆盖虚拟路径可以修复它