Asp.net mvc 3 需要有关MVC 3登录页中ReturnUrl的帮助吗
我的登录视图中有此url: 当我在登录页面时,我得到了正确的url值。 如您所见,我有两个查询字符串参数:ReturnUrl和theme 到目前为止还不错 现在登录页面将表单发布到控制器操作。 我只需要读取这两个查询字符串参数的值。 我就是做不到 这是我的登录页面视图:Asp.net mvc 3 需要有关MVC 3登录页中ReturnUrl的帮助吗,asp.net-mvc-3,Asp.net Mvc 3,我的登录视图中有此url: 当我在登录页面时,我得到了正确的url值。 如您所见,我有两个查询字符串参数:ReturnUrl和theme 到目前为止还不错 现在登录页面将表单发布到控制器操作。 我只需要读取这两个查询字符串参数的值。 我就是做不到 这是我的登录页面视图: @using (Html.BeginForm("try", "login")) { //set text boxes and button so user can try login } 这是我的控制器,我需要这两个值:
@using (Html.BeginForm("try", "login"))
{
//set text boxes and button so user can try login
}
这是我的控制器,我需要这两个值:
[HttpPost]
public ActionResult Try(LoginModel model, string ReturnUrl, string theme)
{
//read all query string param values...but how?
//I am not getting anything in string ReturnUrl, string theme. They are null
}
问题的其他部分:
我可以调试其他控制器。但不是这个控制器。
这是因为我正在使用BeginForm发布表单吗?
没有道理。但即使我在浏览器上出错,断点也不会命中。不确定值未绑定的确切原因,但简单的解决方法是将这些属性添加到登录模型中,并在表单上添加隐藏字段。尝试更改装饰:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Try(LoginModel model, string ReturnUrl, string theme)
{
//read all query string param values...but how?
//I am not getting anything in string ReturnUrl, string theme. They are null
}
通常情况下,您不应该阅读ReturnUrl。流程的工作原理如下:
在上面显示的示例中,我希望在授权后,用户将被重定向到论坛/索引操作,然后该操作将读取值。如果您正在创建ReturnUrl,那么您应该使用URL编码第二个&。Jon,您说过MVC会添加ReturnUrl并使用自动编码重定向到/Account/LogOn。现在MVC如何知道返回到哪个url?基本上,我必须将用户重定向到他单击登录链接的页面。该网站有100个页面&用户可以单击任何页面上的登录。这些页面中的某些页面也有自己的查询字符串。您的情况是当用户试图访问某个需要身份验证的页面时。在这种情况下,MVC将知道重定向到哪里。但在我的例子中,我有不同的用例。我还需要前面的用例,即重定向到最初请求的页面RediredURL应该正好做到这一点-它应该指向最初请求的页面。因此,如果您的ForumController具有[Authorize]属性,并且用户浏览到/forum/456?theme=1,那么他们将被重定向到/Account/LogOn,之后他们将被重定向到forum/456?theme=1。请注意,这里有一个问号而不是一个符号。我的登录控制器中没有登录操作。在这种情况下,我是否需要重命名控制器操作以利用此功能?如果您正在编写自己的帐户控制器,我建议至少引用ASP.NET MVC 3 Internet项目模板中包含的AccountController。