2017-09-28 11 views
0

ここにはモデルがある以下のcshtmlがあります。このページは基本的に確認ページで、ユーザーはキー入力されたすべての情報が正しいことを確認してから処理を進めます。確認ページにデータを投稿してコントローラに戻す

私は私が今やっていることは、再度手動で戻って私のコントローラへのAJAX呼び出しを実行し、自分のデータベースに@Model内のすべてのデータを永続化しますリンクボタン(以下のコードに示されていない)

を持っていますHTMLテーブルの行をループしてjsonオブジェクトを作成し、$ .postを使用してコントローラに投稿する関連データをすべて抽出する

これを行うにはより効率的な方法がありますか?私はあなたが何ができるか、私のデータベース

@model RegistrationViewModels.VerificationViewModel 

<div class="table-responsive"> 
    <table class="table table-bordered"> 
     <colgroup> 
      <col class="col-xs-5"> 
      <col class="col-xs-1"> 
     </colgroup> 
     <tbody> 
      <tr class="active"> 
       <td colspan="2">Rooms</td> 
      </tr> 
      @foreach (var room in Model.Rooms) 
      { 
       <tr> 
        <td> 
         @room.RoomType 
        </td> 
        <td>@String.Format("{0:C}", room.Price)</td> 
       </tr> 
      } 
      <tr class="active"> 
       <td colspan="2">Particulars</td> 
      </tr> 
      @foreach (var occupant in Model.Occupants) 
      { 
       <tr> 
        <td> 
         @occupant.FirstName 
        </td> 
        <td></td> 
       </tr> 
      } 

     </tbody> 
    </table> 
</div> 
+0

セッションでモデルを保存し、Chris Pratt氏が答えたように確認後に取得します。 – jamiedanq

答えて

0

にそれを永続化する前に、非編集可能なデータを示す確認ページを持って、この場合のベストプラクティスは、その後、getアクションにPOSTでデータを渡すで何

そのアクションにPOSTを受け入れる:

[HttpPost] 
public ActionResult Create(Reservation _data) 
{ 
    //do validation ... 

    //now send the data to Confirm action to show the view that user can confirm. Pass the data along. 
    return RedirectToAction("Confirm", "[Controller]", new {@_data = _data}); 
} 

[HttpGet] 
public ActionResult Confirm(Reservation _data) 
{ 
    return View(_data) //no need to use a different model in your verification page. Just don't make the Html fields editable. 
} 

[HttpPost] 
public ActionResult Confirm(Reservation _data) 
{ 
    //save 
} 
0

私はセッション使用のファンではないが、一般的に、これは実際にはおそらく最善のアプローチの状況です。投稿されたデータをセッションに保存し、そのデータを含むページを表示します。その後、ユーザーが確認すると、セッションからデータを読み取って(それをもう一度投稿する必要はなく)、データベースに保存することができます。

関連する問題