Asp.net MVC ActionResult如何检测可选参数



我想检测一个可选参数是否已从url 传递到ActionResult(在我的情况下为字符串Professional

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 }
            );
        }

不要使用专业的,而是使用与MapRoute匹配的id。尝试以下代码:

    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();
    }

最新更新