2013-04-10 3 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 с Search(), как метод действия, как показано ниже:

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

В соответствии с видео, которое я видел, если в URL-адресе ничего не передано, тогда Индия должна прийти как выход. Но, я получаю пустую строку. Где я делаю неправильно?

+0

Что делать, если вы удалите имя = "" из настроек по умолчанию? – maxlego

+0

«имя» требуется, так как оно является частью параметра «url» - {name} –

ответ

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. http: // localhost: 51468/cuisine/ Это означает, что я не передал ни одного параметра, не так ли? Даже тогда я НЕ получаю Индию как выход. –

+0

Вы должны использовать UrlParameter.Optional. Я отредактировал свой ответ, проверьте его. Надеюсь, поможет. – SMS

+0

Большое спасибо SMS. Ты прав. Я отметил ваш ответ. С моим действием ваши два голоса не прошли. Еще раз спасибо. –

Смежные вопросы