0

2つのビュー間で同じモデルを使用していますが、モデルを2番目のビューに投稿すると、以前に入力したすべてのデータがURLに配置されます。URLにデータを投稿せずに、入力されたモデルを2番目のビューに送信することは可能ですか?

コントローラーコード:

    [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を使用してデータを永続化する2番目のビューコード:

<% 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 ではなく) フォーム タグを使用しており、メソッドを指定していないため、POST ではなく GET を使用するようにデフォルト設定されています。

BeginForm を使用するように変換するか、メソッドを追加します。

于 2012-10-24T07:24:32.993 に答える