用强类型视图存储隐藏值

时间:2011-12-10 03:11:17

标签: asp.net-mvc

我正在从ASP.NET WebForms迁移到MVC,我有一个问题。

我有一个强类型视图。如何存储正在删除的项目的索引,以便在提交页面时我可以轻松更新数据?

如果我使用WebForms,我可以在回发时查看URL中的查询参数,我可以将索引存储在视图数据中,或者我可以将其存储在隐藏控件中。我怎样才能在MVC中解决这个问题?

1 个答案:

答案 0 :(得分: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>

我只是快速地将它们放在一起,所以我对任何语法错误表示道歉。希望这有帮助!