我有一个带有剃刀网站的asp.NET mvc 3。我有一个网页,它以如下形式显示数据库中的数据列表:
<input type="text" name="blah1" value="blah" />
<input type="text" name="blah2" value="blahblah" />
<input type="text" name="blah3" value="blahblah" />
上面的每一行都有一个主键。当用户点击提交并将FormCollection回发给控制器时...如何获取每个等级的主键?我是否为包含该行主键的每一行添加一个隐藏字段?如果是这样,我怎么知道它与哪个相关联,因为FormCollection只是一个字典?
答案 0 :(得分:0)
我建议您使用视图模型:
public class MyViewModel
{
public string Id { get; set; }
public string Text { get; set; }
}
然后在您的控制器操作中,您将向视图发送这些模型的列表:
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new[]
{
new MyViewModel { Id = "1", Text = "blah" },
new MyViewModel { Id = "2", Text = "blahblah" },
new MyViewModel { Id = "3", Text = "blahblah" },
};
return View(model);
}
[HttpPost]
public ActionResult Index(IEnumerable<MyViewModel> model)
{
// Here you will get a collection of id and text for each item
...
}
}
和视图可以使用id的隐藏字段和值的文本框:
@model IEnumerable<MyViewModel>
@using (Html.BeginForm())
{
@Html.EditorForModel()
<input type="submit" value="OK" />
}
和相应的编辑器模板(~/Views/Shared/EditorTemplates/MyViewModel.cshtml
):
@model MyViewModel
@Html.HiddenFor(x => x.Id)
@Html.TextBoxFor(x => x.Text)