2012-03-05 103 views
0

我有一個出現問題,需要用戶登錄的鏈接,而且HTML是這樣的一個MVC3 Razor視圖:返回URL不工作Live服務器上VS開發服務器

<a href="Home/Login?returnUrl=/myprojname/Product/Index"> 

,然後在HomeController中的操作方法登錄和一個觀點。登錄操作方法的哪些帖子值。

裏面的後動作方法我檢查如果returnurl不爲空,然後重定向到該URL。在本地系統返回到這個地址

http://localhost:1235/myProjname/Product/Index

和工作正常。但是,當我把它上傳到服務器(IIS 7),它返回到

http://domainname/myProjname/Product/Index

並給出了404,因爲沒有「myProjname」在那裏,如果我刪除了「myprojname」,它以這樣的URL上工作直播服務器

http://domainname/Product/Index

但我需要改變這樣的

<a href="Home/Login?returnUrl=/Product/Index"> 

HREF在這種情況下,它不能與本地系統的工作與URL

http://localhost:1235/Product/Index

請建議的解決方案

回答

2

你是認真的?

好的,我們會一起玩。

解決方案是正確創建鏈接,而不是硬編碼它們。

@Html.ActionLink("Login", "Home", new { returnUrl = Url.Action("Index", "Product") }) 

在旁註中,您可能不需要將returnUrl傳遞給該操作。在操作方法本身中將其從Request.UrlReferrer.AbsoluteUri中拉回。

沒有意思聽起來粗魯,但我強烈建議您前往http://www.asp.net/mvc並進行閱讀/觀看,然後再繼續。

1

使用Url.ActionUrl.Content輔助方法將生成相對於應用程序根的URL,並避免這些問題。

此外,@Href("~/")將生成應用程序根目錄的完整路徑(從視圖)。