Asp.net mvc 使用强类型视图存储隐藏值

Asp.net mvc 使用强类型视图存储隐藏值,asp.net-mvc,Asp.net Mvc,我正在从ASP.NET WebForms过渡到MVC,我有一个问题 我有一个强类型视图。如何存储被删除项目的索引,以便在提交页面时轻松更新数据 如果我使用WebForms,我可以在回发时查看URL中的查询参数,将索引存储在视图数据中,或者将其存储在隐藏控件中。如何在MVC中实现这一点?MVC的美妙之处在于,您可以用几种不同的方法解决这一问题。您只需要找到最适合您特定场景的解决方案。虽然隐藏字段肯定会起作用,但它并不总是最理想的解决方案。下面是一个快速删除场景示例: 控制器 public clas

我正在从ASP.NET WebForms过渡到MVC,我有一个问题

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


如果我使用WebForms,我可以在回发时查看URL中的查询参数,将索引存储在视图数据中,或者将其存储在隐藏控件中。如何在MVC中实现这一点?

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");
    }
}
公共类示例控制器
{
静态字典sampleViewModel=新字典
{
{1,“示例项1”},
{2,“示例项目2”},
{3,“示例项目3”},
};
公共行动结果索引()
{
返回视图(sampleViewModel);
}
[HttpPost]
公共操作结果删除(int id)
{
sampleViewModel.Remove(id);
返回操作(“索引”);
}
}
查看

@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>
@model System.Collections.Generic.Dictionary
...
项目
@foreach(模型中的var项目){
@项目.关键
@使用(Html.BeginForm(“Delete”,new{id=item.Value})){
}
}

我只是很快地把它拼凑起来,所以我为任何语法错误道歉。希望这有帮助

谢谢。如果可以的话,还有一个问题。如果我试图编辑,是否有方法访问更新的模型数据?我花了很长时间才找到这方面的例子。您可以执行以下操作之一:@使用(Html.BeginForm()){我正在尝试。但我仍然不确定如何访问正在提交的模型数据。抱歉,我以前的评论被截断了。这里有一个更好的答案:---当然。不幸的是,在这里的评论中没有很好的方法来回答这个问题。请看NerdDinner教程,它很好地介绍了核心MVC概念:注意t本教程有点旧,没有使用当前版本的MVC。概念仍然相同。明白了,谢谢。我想MVC 3中会有一些更自动化的东西。但是我似乎能够得到我需要的东西,并且可以使用
UpdateModel()
作为一种快捷方式。