2011-12-10 10 views
0

私はASP.NET WebFormsからMVCに移行中です。質問があります。強く型付けされたビューで隠し値を保存する

強く型付けされたビューがあります。ページが送信された場合にデータを簡単に更新できるように、削除するアイテムのインデックスを保存するにはどうすればよいですか?

WebFormsを使用していた場合は、ポストバック時にURLのクエリ引数を参照するか、ビューデータにインデックスを格納するか、非表示のコントロールに格納することができます。私はMVCでこれにどのようにアプローチできますか?

答えて

2

MVCの美しさは、これをいくつかの方法で解決できるということです。特定のシナリオに最適なソリューションを見つけるだけで済みます。隠れたフィールドは確かに機能しますが、必ずしも最も理想的なソリューションではありません。

コントローラ

public class ExampleController 
{ 
    static Dictionary<int, string> sampleViewModel = new Dictionary<int, string> 
    { 
     {1, "Example Item 1"}, 
     {2, "Example Item 2"}, 
     {3, "Example Item 3"}, 
    }; 

    public ActionResult Index() 
    { 
     return View(sampleViewModel); 
    } 

    [HttpPost] 
    public ActionResult Delete(int id) 
    { 
     sampleViewModel.Remove(id); 
     return RedirectToAction("Index"); 
    } 
} 

ビュー

@model System.Collections.Generic.Dictionary<int, string> 

<html> 
    <head> 
     ... 
    </head> 
    <body> 
     <table> 
      <thead> 
       <tr> 
        <th>Item</th> 
        <th></th> 
       </tr> 
      </thead> 
      <tbody> 
       @foreach (var item in Model) { 
       <tr> 
        <td>@item.Key</td> 
        <td> 
        @using (Html.BeginForm("Delete", new { id = item.Value })) { 
         <input type="submit" value="Delete" /> 
        } 
        </td> 
       </tr> 
       } 
      </tbody> 
     </table> 
    </body> 
</html> 

私はすぐに一緒に任意の構文エラーがないので、私の謝罪これを投げた:ここでは、シナリオを削除する簡単な例です。お役に立てれば!

+0

ありがとうございました。 1つの追加の質問、もしあれば。私が編集しようとしている場合、更新されたモデルデータにアクセスする方法はありますか?私はこれのための例を見つける時間の地獄を持っています。 –

+0

絶対に。あなたは次のいずれかを行うことができます: @using(Html.BeginForm()){ –

+0

私はそれを試みています。しかし、私はまだ提出されているモデルデータにアクセスする方法が不明です。 –

関連する問題