C# MVC 路由映射和查询字符串

C# MVC Routemap and Querystring

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

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,没找到问题出在哪里

它不是 QueryString 的一部分。它是 RouteData 的一部分。QueryString 将包含 ? 符号之后的所有内容,这意味着查询传递的参数 string.But 在你的路线中你把它作为 路线 的一个块。所以你可以从 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?用户名

和根

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