Asp.net mvc 如何避免ASP.NET MVC的FormCollection?
谈到ASP.NETMVC,我非常不爽 我正在看ASP.NET MVC外接程序中的初学者示例 我看到这样的东西是自动生成的:Asp.net mvc 如何避免ASP.NET MVC的FormCollection?,asp.net-mvc,Asp.net Mvc,谈到ASP.NETMVC,我非常不爽 我正在看ASP.NET MVC外接程序中的初学者示例 我看到这样的东西是自动生成的: [AcceptVerbs(HttpVerbs.Post)] public ActionResult Edit(int id, FormCollection collection) { try { // TODO: Add update logic here return RedirectToAction("Index");
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, FormCollection collection)
{
try
{
// TODO: Add update logic here
return RedirectToAction("Index");
}
catch
{
return View();
}
}
我发现这很糟糕,因为我想使用实体框架来保存实体状态。我想要类似于:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(Person person)
{
try
{
// TODO: Add update logic here
return RedirectToAction("Index");
}
catch
{
return View();
}
}
请注意,我取出了FormCollection并将其替换为Person类。
-我希望这样可以避免使用魔术弦。
-保护实体国家。
-更明确
这可能吗
/与MVC混淆是的,尽管我强烈建议使用专用的表示/编辑模型,而不是使用实体。尽管如此,如果表单中有足够的信息来填充
Person
的所有不可为空的属性,那么您显示的内容将起作用,尽管我强烈建议使用专用的演示/编辑模型,而不是使用您的实体。尽管如此,如果表单中有足够的信息来填充Person
的所有不可为空属性,那么您显示的内容将起作用。是的,这是可能的!表单的元素需要与您试图表示的模型的属性具有相同的名称。这个过程称为绑定,如果查看ModelBinder对象,您可以发现更多
有关更多信息,请查看以下问题:。是的,这是可能的!表单的元素需要与您试图表示的模型的属性具有相同的名称。这个过程称为绑定,如果查看ModelBinder对象,您可以发现更多
想了解更多信息,请看这个问题:。令人惊讶的是,我作为猜测发布的代码几乎按原样工作(幸运的猜测)。。。无论如何,我发现这篇文章也很有帮助:令人惊讶的是,我作为猜测发布的代码几乎按原样工作(幸运的猜测)。。。无论如何,我发现这篇文章也很有用:我确实意识到这很重要:P我确实意识到这很重要:P