-1

我在大型 MVC2 应用程序中遇到了一些边缘情况问题。最初,我有一个主视图,它会在加载时加载部分视图,其中包含链接。我有一个本地工作环境,它在项目设置页面中使用了一个空的虚拟路径设置,还有一个暂存环境,它(为了更好地反映多应用生产环境)有一个特定于应用程序的虚拟路径。两者都运行良好。最近,我有理由将部分视图加载从页面加载切换到异步加载。没有进行其他更改。链接继续在本地运行,但在升级到暂存时,忽略添加特定于应用程序的路径设置,导致所有链接中断。我能够找到一种解决方法,基于使用一个更彻底的地址,

为了更清楚(因为我意识到前面可能有点不清楚),这个特定的错误只有在以下都为真时才会发生:

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

诚然,我可以通过反复试验找出某种方法来将较长的名称也换成内部链接,并让一切都或多或少地工作,但这不是一个非常干净的解决方案,我可能需要这样做将来在其他地方也会发生同样的事情,我觉得那里一定有更好的答案。似乎无论出于何种原因,该PartialView()调用都未能进行某种链接按摩,而该View()调用(它包含在原始非异步版本中的所有内容中)正在自动处理。有谁知道我可以做些什么来告诉异步调用partialView()应用与基础相同的虚拟路径View()

4

1 回答 1

0

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

于 2012-07-24T14:32:31.023 回答