C#MVC Routemap和Querystring

时间:2015-12-01 09:18:44

标签: c# asp.net-mvc asp.net-mvc-routing

我正在构建一个MVC Web应用程序。我想为我网站中的某个页面创建一个自定义登录网址,例如:

  

www.mysite.com/sites/mycompany/mysite/GetLogin/myusername

所以我创建了一个新的MapRouteas,如下所示:

routes.MapRoute(
            "GetLogin", // the Route name
            "sites/{company}/{site}/{action}/{username}", 
            new { controller = "Home", action = "GetLogin" },
            new[] { "****.Controllers" }
        );

在Home控制器中,我有GetLogin操作结果:

public ActionResult GetLogin()
{
        string UserName = Request.QueryString["username"];
        if (UserName != null)
        {

        }
        return View();    
}

但UserName变量的值为null,我没有找到问题所在。

1 个答案:

答案 0 :(得分:0)

它不是QueryString的一部分。它是RouteData的一部分。QueryString将包含?符号后面的所有内容,这意味着查询字符串传递的参数。但是在您的路线中,您将其作为路线的块进行。您可以从RouteData

中检索它
public ActionResult GetLogin()
{
        string UserName = RouteData.Values.Contains("username") ? RouteData.Values["username"].ToString() : null;
        if (UserName != null)
        {

        }
        return View();    
}

回复评论

对于QueryString,它必须看起来像

www.mysite.com/sites/mycompany/mysite/GetLogin?username

和root

routes.MapRoute(
            "GetLogin", // the Route name
            "sites/{company}/{site}/{action}", 
            new { controller = "Home" },
            new[] { "****.Controllers" }
        );