2012-01-16 51 views

回答

5

網址生成是在您的應用程序的global.asax路由配置的結果。當你使用像ActionLink這樣的助手時,他們檢查路由配置並相應地生成路由。

如果您稍後更改路由配置,或將應用程序安裝到虛擬目錄,由整個應用程序中的助手生成的URL動態變化,因此您不必手動檢查和更改每個硬編碼的URL字符串,並且您的應用程序不太可能突破。

如果要標記錨點,可以使用UrlHelper.Action Method。在所有依賴URL生成的助手中,使用這種方法。

<a href="@Url.Action("Logon", "Account")">logon<a> 
0

我已經寫了一個小網站,其中有硬編碼的網址。我傾向於避免現在的做法,因爲一旦推到產品時就需要更改所有URL,這很容易導致頭痛。

這是一個小型的網絡應用程序,它仍然驅使我在牆上。我會遵循這個建議:)

+0

的網址

我們可以寫出像一個擴展,

 public static MvcHtmlString ActionLink<TController>(this HtmlHelper helper, Expression<Func<TController, object>> expression, string displayText) { string controller = typeof(TController).GetControllerName(); string action = expression.GetActionName(); return helper.ActionLink(displayText, action, controller); } 

,然後在的觀點一樣,使用它,

@Html.Action<AccountController>(a=>a.Logon(),"Click here") 
bzlm 2012-01-16 12:02:57

+0

雖然引用的問題是關於控制器/操作名稱,但是這個問題被問及爲什麼上述評論是真實的。我只是提到這是URL不應被硬編碼的另一個原因 – 2012-01-16 12:42:57

-1

我寧可不使用Url.Action(「登錄」,「帳戶」),因爲它是硬編碼和動作名稱,它的難以辨認的任何變化。

更好地抽出時間來檢查註釋的有效性:)
+2

這已經在Futures中了,對嗎?並且存在不可忽略的性能損失;有一個數字報告... – bzlm 2012-01-16 12:02:05

+0

這應該是一個評論 – archil 2012-01-16 12:16:12

+0

是的,它有一些性能問題,但如果你的服務器足夠的擴展......可以考慮。根據[此鏈接](http://devlicio.us/blogs/hadi_hariri/archive/2010/03/09/profiling-apps-1-of-n-the-mvc-actionlink.aspx)的差異不是太大許多 – Manas 2012-01-16 12:25:04

相關問題