談談在體驗ASP.NET MVC 4 的過程中遇到的那些令人蛋疼的事(2)

來源:互聯網
上載者:User

在ASP.NET MVC中URLRouting也就是URL路由,這是一個神奇的功能,可以把Url變成符合使用者習慣或者更加對搜尋引擎友好的Url.簡單地帖一下代碼:

routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

這個是MVC預設的路由.現在,我想實現這樣一條URL: http://www.abc.com/apple/  讓它對應的controller是Home ,action是google.很簡單的內容就不多說了,簡單地貼一下代碼:

routes.MapRoute(
"Topic", // Route name
"apple", // URL with parameters
new { controller = "Home", action = "google" }// Parameter defaults
);

現在有這樣一條Actionlink: @Html.ActionLink("Apple", null,"apple", null, new { @class="abc" }), 這條ActionLink是在一個_Layout.cshtml中,當我們第一次請求這條ActionLink的時候,會正確解析到Home controller,google Action, 地址顯示是http://www.abc.com/apple/  當跳轉過後,第二次請求這條ActionLink的時候,解析的仍然是Home controller,google Action, 但是地址欄中的Url會變成http://www.abc.com/Home/google 如果把action中的null改成Null 字元就不會出現這種情況.不過真的有點蛋疼,為什麼只有在跳轉一次之後地址欄才會出錯?

謝謝1樓的提醒,在上面我把action和controller弄反了,汗,非常抱歉.已經修改過來了.

另外我說的側重點是想把Url變成http://www.abc.com/apple/ 另外這篇文章的意思是說,當您把Actionlink裡面的action設定為null的時候,(暫且把Url根目錄的的第一位稱為controller第二位稱為action)如果當前Url中的action是route預設的action的時候(比如Index) 返回的action就會為空白.如果不是,Url中action就會是route中當前的action.進而使您原有的url發生變化.而如果您把action那一項設定為空白字元的時候, 跳轉後的Url就始終是http://www.abc.com/apple/而不會蛋疼地變成http://www.abc.com/Home/google.

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.