2013-12-01 3 views
1

Я хотел бы обнаружить, если необязательный параметр был принят к ActionResult в моем случае строка Professional из URLAsp.net MVC ActionResult как определить дополнительные параметры?

site.com/Account/Register/Professional следует установить модель IsProfessional = истинный

site.com/Account/Register/ следует установить модель IsProfessional = false

используя следующую строку кода professional всегда null.

Любая идея, как исправить это?

public ActionResult Register(string professional) 
    { 
     // DETECT HERE 
     RegisterViewModel model = new RegisterViewModel(); 
     if (!string.IsNullOrWhiteSpace(professional) && professional.ToLower() == "professional") 
     { 
      model.IsProfessional = true; 
     } 
     return View(); 
    } 



    public static void RegisterRoutes(RouteCollection routes) 
     { 
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

      routes.MapRoute(
       name: "Default", 
       url: "{controller}/{action}/{id}", 
       defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
      ); 
     } 
+0

Как выглядят ваши маршруты? –

+0

просто отредактируйте мой фрагмент – GibboK

ответ

2

Вместо использования профессионального идентификатора использования, соответствующего вашему MapRoute. Попробуйте под кодом:

public ActionResult Register(string id) 
    { 
     var model = new RegisterViewModel(); 
     if (!string.IsNullOrWhiteSpace(id) && id.ToLower() == "professional") 
     { 
      model.IsProfessional = true; 
     } 
     else 
     { 
      model.IsProfessional = false; 
     } 
     return View(); 
    } 
+1

Или создайте новый маршрут, определяющий параметр 'professional'. –

+0

Я думаю, используя модель.IsProfessional = (! String.IsNullOrWhiteSpace (id) && id.ToLower() == "professional"); будет лучше. – alexmac

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