我正在为公司 Intranet 站点开发 MVC 3 应用程序,但我遇到了一些 URL 帮助程序问题,有时无法生成正确的 URL。该应用程序是通过由我们的 IT 部门控制的访问管理器应用程序访问的,该应用程序基本上提供了一个标准化的 URL,因此用户不需要知道有关服务器的任何信息。例如,要直接在服务器上访问应用程序,我会访问:
http://philsserver/App
通过访问管理器,我将使用 IT 部门提供的 URL:
http://secureintranet/PHILSAPP/App/
我在我的应用程序的几个地方使用 MVC URL 帮助程序 - 问题是有时“PHILSAPP”部分被遗漏了 - 当我在“ <a>
”链接中使用它时,它可以工作,但是当我在其他地方使用它时,它才不是。
例如,代码:
<a href="@Url.Action("Index", "FormsAndTemplates")">
正确创建链接为:
<a href="/PHILSAPP/App/FormsAndTemplates">
.
以下代码:
@Html.TextBox("lastName", ViewBag.LastName as string, new { @class = "input-mini", @autocomplete = Url.Action("QuickSearch", "Employee") })
产生:
<input autocomplete="/App/Employee/QuickSearch" class="input-mini" id="lastName" name="lastName" type="text" value="" />
请注意,此 URL 不包含“PHILSAPP”部分。如果我在 javascript 中使用 URL 帮助程序,或者除了“ <a>
”标签之外的任何地方,也会发生这种情况。有谁知道为什么会这样?据我所知,对 Url.Action 的两个调用几乎相同,因此我无法弄清楚为什么会发生这种情况。如果这个问题已经得到解答,我深表歉意,但我无法找到任何有关有类似问题的人的信息。提前感谢您的任何帮助。
更新:根据要求,我的路线如下:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional });
更新 2:正在使用的访问管理器是 Tivoli Identity Manager,如果这给任何人任何线索的话。