C# 当在局部视图中异步加载时,mvc2中的链接将停止正确遵循虚拟路径
我在一个大型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应用程序中遇到了一些边缘问题。最初,我只有一个主视图,在加载时加载部分视图,其中包含链接。我有一个本地工作环境,它使用项目设置页面中的空虚拟路径设置,还有一个临时环境(为了更好地反映多应用程序生产环境),它有一个特定于应用程序的虚拟路径。所有的信号都在这两个方面都很好。最近,我有理由将部分视图加载从页面加载切换到异步加载。没有其他变化。这些链接继续在本地运行,但当移动到登台时,忽略了添加特定于应用程序的路径设置,导致所有链接都断开。我能够找到一个解决办法,基于使用一个更彻底的
- 包含链接的部分视图必须通过asych get调用和jquery
函数放置到位。当MVC将其直接加载到页面中时,一切正常.html()
- 必须位于虚拟路径设置为非空的服务器上。这里的问题不知何故来自于没有从虚拟路径设置中追加字符串。事实上,如果您在生成的链接的适当位置手动输入虚拟路径,它们就可以正常工作
- 至少就部分视图调用而言,它必须采用
的形式,而不是PartialView(“partialViewName”,dataObject)
。以较长的格式交换确实有效PartialView(“~/Areas/appName/Views/controllerName/partialViewName.ascx”,dataObject)
诚然,我可以通过反复尝试找到一些方法,将较长的名称替换为内部链接,让所有内容或多或少都能正常工作,但这不是一个非常干净的解决方案,我可能需要在将来的其他地方再次做同样的事情,我觉得一定有更好的答案。无论出于何种原因,
PartialView()
调用似乎无法执行某种链接消息处理,View()
调用(在原始非异步版本中围绕所有内容)正在自动处理。有人知道我能做些什么来告诉异步调用的partialView()
应用与基本View()
相同的虚拟路径吗?我已经找到了答案。异步服务的部分视图中的相对链接似乎基于调用它们的.post()
所使用的链接,而且,至少在某些情况下,MVC设法更宽容post调用,而不是从它们开始的链接。更改get call地址以正确覆盖虚拟路径可以修复它