2009-07-13 28 views
0

私は同じ部分的なビューを含む複数のページがあります。部分には、アクションに投稿するフォームが含まれています。ポストの後、私はポストの前にいたページに戻りたい。これを行う最善の方法は何ですか?asp.net MVCハンドル部分的なポストバック応答

例:

部分図: フォームポストアクション=ノート/作成/

ページ

のPage1: 製品/インデックス/

PAGE2: 顧客/詳細/

ページ3: 注文/詳細/

これらの3ページにはパーシャルビューが含まれています。パーシャルを送信すると、note/create /にリダイレクトされます。私は成功の元のページに戻る必要があります。こうしてページを残していない、またはそのハンドルアクションにパラメータとして電流コントローラ/アクション/ ID(又は全体としてURL)を渡す -

おかげサイモン

答えて

2

いずれかはポストはAJAXを介して起こる有しますポスト。後述の例を参照してください。

<% using (Html.BeginForm(...)) { %> 

     <input type='hidden' 
      name='currentController' 
      value='<%= ViewContext.RouteData["controller"] %>' /> 
     <input type='hidden' 
      name='currentAction' 
      value='<%= ViewContext.RouteData["action"] %>' /> 
     <input type='hidden' 
      name='<%= ViewContext.RouteData["id"] %>' /> 

     ...rest of form... 
<% } %> 

または

<% using (Html.BeginForm(..., 
     new { ReturnUrl = Url.Action(ViewContext.RouteData["action"], 
             ViewContext.RouteData) }, ...)) { %> 

    .... 
<% } %> 
1

あなたは隠しフィールドで、現在のページのアドレスを格納し、POSTリクエストを送信することができます。あなたの部分図で

<script type="text/javascript"> 

var field = document.getElementById("currentPage"); 
field.value=document.location.href; 

</script> 

<form method="post" action="note/create/"> 
... 

<input type="hidden" value="" id="currentPage" name="currentPage" /> 
</form> 

その後隠し入力のアドレスを取得し、それにユーザーをリダイレクトします。

関連する問題