我正在构建一个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,我没有找到问题所在。
答案 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" }
);