2011-10-04 47 views
0

我們使用TFS將應用程序部署到多個環境(Dev,QA,Prod)。很簡單,我們的Dev和QA環境具有像dev.domain/APPLICATION和qa.domain/APPLICATION這樣的URL。所以我們有一個單一的網站,每個應用程序都是一個虛擬應用MVC站點與虛擬應用程序路由

但是在生產中,他們希望每個應用程序都是自己的網站,比如APPLICATION.domain.com ... Grrr!在Visual Studio中,應用程序的屬性被配置爲「虛擬路徑」。我「不能確定我應該怎麼去了解這個問題的appliation包含的代碼,例如:。<a href='/APPLICATION/File/Download?id=<#= PkFileId #>'><#= Name #></a>這會導致問題,因爲生產它不是在一個虛擬應用程序

我可以做一個網站叫application.domain.com與一個空的目錄,然後添加一個虛擬應用程序,但是我必須在站點的根目錄中重定向到虛擬應用程序,或者我可以以某種方式配置應用程序?不知道我的選項是什麼...任何建議都讚賞

回答

2

的appliation包含的代碼,如:

<a href='/APPLICATION/File/Download?id=<#= PkFileId #>'><#= Name #></a>

ASP.NET MVC應用程序不應該包含像這樣的代碼(其中url是硬編碼的代碼)。在ASP.NET MVC應用程序,你應該總是使用HTML和網址助手:

@Html.ActionLink(
    Model.Name, 
    "Download", 
    "File", 
    new { id = Model.PkFileId }, 
    null 
) 

這樣,可以肯定的是,無論你的路由配置方式或根據您的應用程序託管虛擬目錄,它應該工作。


UPDATE:

您的評論之後,它看起來像你使用的是Telerik的網格。在這種情況下,你可以嘗試沿線的東西產生適當的錨:

columns 
    .Bound(x => x.PkFileId) 
    .ClientTemplate(
     Html.ActionLink(
      "<#= Name #>", 
      "Download", 
      "File", 
      new { id = "<#= PkFileId #>" }, 
      null 
     ).ToString() 
    ) 
    .Title(""); 
+0

哈哈,我知道我會得到這個...我使用Telerik的宕電網和可能似乎無法得到它喜歡ActionLink,所以我們顯然走錯了路。我會看看我是否可以修復... – MisterIsaak

+1

@Jisaak,看看我的更新是否有意義。 –

+0

真的!? '.ToString()'......簡直不敢相信。起初,我已經準確地發佈了你的東西,減去'.ToString()',顯然不起作用。嘗試與qutoes搞亂......然後我嘗試了'.Template(f => @ Html.ActionLink(f.Name,「Download」,「File」,new {id = f.PkFileId}))'無濟於事。感謝您花時間幫我解決我的真正潛在問題。 – MisterIsaak