2011-04-05 87 views
1

我有这个在我的全球MVC3自定义路由与虚拟目录的问题

//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

这就是为什么你应该使用'Html','Ajax'和'Url'助手生成您的链接... – 2011-04-05 17:09:58

+0

Sergi ... thx ...我试过,但无法获得正确的形式的JavaScript变量我试过这个window.location.href = @ Url.Action(“Software”,“DownloadInstall”,new RouteValueDictionary(new {id = @ Model.ID,getLogonServer()}),null); – Bayrat 2011-04-05 18:04:01

回答

0

我会尝试和使用Url帮手,如果我是你,但我意识到JavaScript函数的结果将是一个问题。
我不知道是否会工作,但你可以尝试建立你的链接是这样的:

var server = getLogonServer(); 
window.location.href = '@Url.Action("DownloadHelp", "Software", 
    new { Model.Id, logonserver = ""})' + '/' + getLogonServer(); 

什么肯定会工作正在getLogonServer()的HTML辅助函数,而不是一个javascript函数,但我不知道这是否是您的选择。

0

我解决它通过使用@ Url.Content助手这样:

window.location.href = '@Url.Content("~/Software/DownloadInstall/")' + @Model.ID +'\/' + getLogonServer();