在評論on this question,Phil提到爲什麼將URL編碼成MVC應用程序是一個壞主意? (或者是什麼?)
硬編碼URL字符串成一個MVC應用程序是一個壞主意。幫助者在那裏是有原因的
這是嗎?如果是這樣,爲什麼?
在評論on this question,Phil提到爲什麼將URL編碼成MVC應用程序是一個壞主意? (或者是什麼?)
硬編碼URL字符串成一個MVC應用程序是一個壞主意。幫助者在那裏是有原因的
這是嗎?如果是這樣,爲什麼?
網址生成是在您的應用程序的global.asax路由配置的結果。當你使用像ActionLink這樣的助手時,他們檢查路由配置並相應地生成路由。
如果您稍後更改路由配置,或將應用程序安裝到虛擬目錄,由整個應用程序中的助手生成的URL動態變化,因此您不必手動檢查和更改每個硬編碼的URL字符串,並且您的應用程序不太可能突破。
如果要標記錨點,可以使用UrlHelper.Action Method。在所有依賴URL生成的助手中,使用這種方法。
<a href="@Url.Action("Logon", "Account")">logon<a>
我已經寫了一個小網站,其中有硬編碼的網址。我傾向於避免現在的做法,因爲一旦推到產品時就需要更改所有URL,這很容易導致頭痛。
這是一個小型的網絡應用程序,它仍然驅使我在牆上。我會遵循這個建議:)
的網址
我們可以寫出像一個擴展,
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
雖然引用的問題是關於控制器/操作名稱,但是這個問題被問及爲什麼上述評論是真實的。我只是提到這是URL不應被硬編碼的另一個原因 – 2012-01-16 12:42:57
我寧可不使用Url.Action(「登錄」,「帳戶」),因爲它是硬編碼和動作名稱,它的難以辨認的任何變化。
更好地抽出時間來檢查註釋的有效性:)
+1除非使用虛擬目錄,否則推送到製作時不會更改此問題。這更多關於控制器和動作名稱。 – footy 2012-01-16 06:40:23