Asp.net MVC ReturnUrl变量未在Html.BeginForm中显示方法FormMethod.Post

时间:2012-02-04 21:57:37

标签: asp.net-mvc-3 post razor controller query-string

MVC3中的默认模板在登录页面的查询字符串中设置'returnurl'变量。然后该页面回发到控制器

@using (Html.BeginForm()) {

然后在控制器中拾取它,如此

[HttpPost]
    public ActionResult LogOn(LogOnModel model, string returnUrl)
    {

我想在表单中添加一个CSS类,因此我将帮助器更改为:

@using (Html.BeginForm("LogOn", "Account", FormMethod.Post, new { @class = "form-horizontal" }))

但现在查询字符串中的信息未在控制器中设置。

我总是可以在表单中为retrunurl设置隐藏的输入值,但我不知道是否有更简单的方法。

由于

1 个答案:

答案 0 :(得分:5)

在这种情况下,您需要使用隐藏字段,因为此重载不会保留包含returnurl变量的原始查询字符串。或者,如果您不想使用隐藏字段,则可以使用查询字符串参数:

@using (Html.BeginForm(null, null, new { returnUrl = Request["returnurl"] }, FormMethod.Post, new { @class = "form-horizontal" }))
{
    ...
}