2013-04-10 83 views
0

我正在關注Pluralsight視頻以學習MVC4。如何在ASP.NET MVC中定義默認動作參數4

雖然學習有關動作參數的默認值我已經定義了以下設置內部RouteConfig.cs

 routes.MapRoute(
      name: "cuisine", 
      url: "cuisine/{name}", 
      defaults: new { controller="cuisine", action="search", name=""}); 

我已創建了搜索CuisineController()作爲如下面的動作方法:

public ActionResult Search(string name="India") 
    { 
     var message = Server.HtmlEncode(name); 
     return Content(message); 
    } 

根據我所看到的視頻,如果URL中沒有任何內容被傳遞,那麼印度應該作爲輸出。 但是,我得到空字符串。 我在哪裏做錯了?

+0

如果您從路由默認值中刪除了name =「」,該怎麼辦? – maxlego 2013-04-10 11:42:40

+0

「name」是必需的,因爲它是「url」參數的一部分 - {name} – 2013-04-10 12:09:56

回答

0

你必須使用UrlParameter.Optional

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

public ActionResult Search(string name = "India") 
     { 
      var message = Server.HtmlEncode(name); 
      return Content(message); 
     } 

這顯示 「印度」 完美頁面。

+0

感謝您的快速響應。 我已使用以下URL調用CuisineController中的Search Action方法。 http:// localhost:51468/cuisine/ 這意味着我沒有傳遞任何參數,對吧?即使那樣,我也沒有得到印度的產出。 – 2013-04-10 10:58:14

+0

你必須使用UrlParameter.Optional。我編輯了我的答案,看看。希望能幫助到你。 – SMS 2013-04-10 12:15:56

+0

謝謝很多短信。你是對的。我已經標記了你的答案。用我的行動,你的兩票倒退了。再次感謝。 – 2013-04-11 10:36:56

相關問題