我正在从ASP.NET WebForms迁移到MVC,我有一个问题。
我有一个强类型视图。如何存储正在删除的项目的索引,以便在提交页面时我可以轻松更新数据?
如果我使用WebForms,我可以在回发时查看URL中的查询参数,我可以将索引存储在视图数据中,或者我可以将其存储在隐藏控件中。我怎样才能在MVC中解决这个问题?
答案 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>
我只是快速地将它们放在一起,所以我对任何语法错误表示道歉。希望这有帮助!