我在大型 MVC2 应用程序中遇到了一些边缘情况问题。最初,我有一个主视图,它会在加载时加载部分视图,其中包含链接。我有一个本地工作环境,它在项目设置页面中使用了一个空的虚拟路径设置,还有一个暂存环境,它(为了更好地反映多应用生产环境)有一个特定于应用程序的虚拟路径。两者都运行良好。最近,我有理由将部分视图加载从页面加载切换到异步加载。没有进行其他更改。链接继续在本地运行,但在升级到暂存时,忽略添加特定于应用程序的路径设置,导致所有链接中断。我能够找到一种解决方法,基于使用一个更彻底的地址,
为了更清楚(因为我意识到前面可能有点不清楚),这个特定的错误只有在以下都为真时才会发生:
.html()
包含链接的部分视图必须由 asych get 调用和 jquery函数放置到位。当它由 MVC 直接加载到页面中时,一切正常。- 必须位于虚拟路径设置为非空的服务器上。这里的问题不知何故来自于未从虚拟路径设置中附加字符串。实际上,如果您在适当位置手动输入生成链接的虚拟路径,它们就可以正常工作。
- 至少对于部分视图调用,它必须是形式
PartialView("partialViewName", dataObject)
而不是PartialView("~/Areas/appName/Views/controllerName/partialViewName.ascx", dataObject)
. 以较长格式交换确实有效。
诚然,我可以通过反复试验找出某种方法来将较长的名称也换成内部链接,并让一切都或多或少地工作,但这不是一个非常干净的解决方案,我可能需要这样做将来在其他地方也会发生同样的事情,我觉得那里一定有更好的答案。似乎无论出于何种原因,该PartialView()
调用都未能进行某种链接按摩,而该View()
调用(它包含在原始非异步版本中的所有内容中)正在自动处理。有谁知道我可以做些什么来告诉异步调用partialView()
应用与基础相同的虚拟路径View()
?