0

我在两个视图之间使用相同的模型,但是当将模型发布到第二个视图时,它会将所有先前输入的数据放入 URL。是否可以将填充模型发送到第二个视图而不在 URL 中发布数据?

控制器代码:

    [HttpPost]
    public ActionResult ViewExample1(.Models.RegisterModel model)
    {
        if (ModelState.IsValid)
        {
            return RedirectToAction("ViewExample2", model);
        }
        return View(model);
    }

    public ActionResult ViewExample2(Models.RegisterModel model)
    {
        return View(model);
    }

第二个视图代码,当这个视图被回发时,我使用 HiddenFor 来持久化数据:

<% using (Html.BeginForm(null, null, FormMethod.Post, new { id="ViewExample2"})) { %>
    <%: Html.HiddenFor(model => model.UserName)%>
<% } %>
4

2 回答 2

1

当您使用 重定向到一个动作时RedirectToAction(),您是通过GET. 因此,框架将 url 中的视图模型传递给操作。

我建议你这样做:

[HttpPost]
public ActionResult ViewExample1(Models.RegisterModel model)
{
    if (ModelState.IsValid)
    {
        // Do the work you want to do in the ViewExample2 action here!
        // ... and then return the ViewExample2 view
        return View("ViewExample2", model);
    }
    return View(model);
}

// This action is not needed anymore
/*public ActionResult ViewExample2(Models.RegisterModel model)
{
    return View(model);
}*/
于 2012-10-24T09:09:17.240 回答
0

我的猜测是您使用的是表单标签(而不是 BeginForm)并且您没有指定方法,因此它默认使用 GET 而不是 POST。

转换为使用 BeginForm,或添加方法。

于 2012-10-24T07:24:32.993 回答