2

partialView のレイアウト ページと、レイアウトを使用する他の 3 つのページに検索テキストを入力しています。

@using (Html.BeginForm("Search", "Product"))
{
    @Html.TextBoxFor(m => m.SearchText)
    @Html.ValidationMessageFor(m => m.SearchText)

    <input type="submit" value="Search"/>
}

製品/検索アクション内に入ったときに、どこから来たのかを知り、他の 3 つのページが異なる ViewModel を使用していると仮定してメッセージを表示して正しいページに戻るにはどうすればよいですか?

4

1 に答える 1

2

レイアウトBeginFormで、ルート値にリクエストパスを含めるように変更します。

@using (Html.BeginForm("Search", "Product"),new {path = Request.Path})

次に、コントローラーで、そのパスにリダイレクトして終了できます。

public ActionResult Search( string path, FormCollection form ) {
    // build your search results here
    return Redirect( path );
}

そして、それでうまくいくはずです。追加情報を渡す必要がある場合は、パスにクエリ文字列を追加するだけです。

public ActionResult Search( string path, FormCollection form ) {
    // build your search results here
    return Redirect( path + "?message=foo" );
}
于 2012-06-01T19:17:49.033 に答える