2013-04-10 51 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

相关问题