Asp.net mvc 3 需要有关MVC 3登录页中ReturnUrl的帮助吗

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 } 这是我的控制器,我需要这两个值:

我的登录视图中有此url:

当我在登录页面时,我得到了正确的url值。 如您所见,我有两个查询字符串参数:ReturnUrl和theme 到目前为止还不错

现在登录页面将表单发布到控制器操作。 我只需要读取这两个查询字符串参数的值。 我就是做不到

这是我的登录页面视图:

@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。流程的工作原理如下:

  • 请求控制器操作,该操作需要使用[Authorize]属性进行身份验证
  • ASP.NET MVC添加ReturnUrl并重定向到/Account/LogOn,自动编码并附加ReturnUrl参数
  • 验证登录信息后,Account/LogOn POST controller操作将重定向到ReturnUrl中的URL
  • 我在以下帖子中详细描述了这一点:

    第二篇文章指出了需要小心处理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。