我在全球
中有这个 //custom route
routes.MapRoute(
"DownloadInstall", // Route name
"{controller}/{action}/{id}/{logonserver}", // URL with parameters
new { controller = "Software",
action = "DownloadInstall" } // Parameter defaults
);
//custom route
routes.MapRoute(
"DownloadHelp", // Route name
"{controller}/{action}/{id}/{logonserver}", // URL with parameters
new { controller = "Software",
action = "DownloadHelp" } // Parameter defaults
);
//default route
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Software", action = "Index",
id = UrlParameter.Optional } // Parameter defaults
);
我在javascript中调用自定义路由(效果很好),如下所示:
window.location.href = '/Software/DownloadHelp/' + @Model.ID +'\/' +
getLogonServer();
然而,只要我将它移动到具有虚拟目录的IIS7盒子,我的默认路由就足够聪明,可以在虚拟名称前添加...但是找不到基于javascript的路由,因为虚拟目录不是没过。
答案 0 :(得分:0)
如果我是你,我会尝试使用Url
助手,但我发现javascript函数结果会有问题。
我不确定这是否有效,但您可以尝试建立这样的链接:
var server = getLogonServer();
window.location.href = '@Url.Action("DownloadHelp", "Software",
new { Model.Id, logonserver = ""})' + '/' + getLogonServer();
什么肯定会使getLogonServer()
成为一个Html辅助函数而不是一个javascript函数,但我不知道这是否适合你。
答案 1 :(得分:0)
我通过使用@ Url.Content助手解决了这个问题:
window.location.href = '@Url.Content("~/Software/DownloadInstall/")' + @Model.ID +'\/' + getLogonServer();