Asp.net mvc 对于HttpPost编辑操作方法,哪个重载最有效?
对于HttpPost编辑操作方法,哪个重载最有效Asp.net mvc 对于HttpPost编辑操作方法,哪个重载最有效?,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,对于HttpPost编辑操作方法,哪个重载最有效 [HttpPost]公共操作结果编辑(int-id,FormCollection集合) [HttpPost]公共操作结果编辑(OurDomainDataModel obj) 编辑 使用OurDomainDataModel [HttpPost] public ActionResult Create(Movie m) { if (ModelState.IsValid) {
[HttpPost]公共操作结果编辑(int-id,FormCollection集合)
[HttpPost]公共操作结果编辑(OurDomainDataModel obj)
编辑 使用
OurDomainDataModel
[HttpPost]
public ActionResult Create(Movie m)
{
if (ModelState.IsValid)
{
db.Movies.Add(m);
db.SaveChanges();
return RedirectToAction("Index");
}
else
return View(m);
}
[HttpPost]
public ActionResult Create(FormCollection collection)
{
Movie movie = new Movie();
if (TryUpdateModel(movie))
{
db.Movies.Add(movie);
db.SaveChanges();
return RedirectToAction("Index");
}
else
return View(movie);
}
使用FormCollection
[HttpPost]
public ActionResult Create(Movie m)
{
if (ModelState.IsValid)
{
db.Movies.Add(m);
db.SaveChanges();
return RedirectToAction("Index");
}
else
return View(m);
}
[HttpPost]
public ActionResult Create(FormCollection collection)
{
Movie movie = new Movie();
if (TryUpdateModel(movie))
{
db.Movies.Add(movie);
db.SaveChanges();
return RedirectToAction("Index");
}
else
return View(movie);
}
推荐哪一种作为最佳实践?使用
FormCollection
自己编写所有代码可能比使用ASP.NET MVC提供的内置功能更快,这取决于您的程序员水平和映射层的效率
但是,当性能不重要时;当你仅仅使用这个工具的时候,你会为自己节省很多宝贵的时间
ActionResult Edit(Model model);
语法
我们每月2.5亿次的MVC站点在使用MVC活页夹方面做得很好。第一个站点在创建和填充我们的DomainDataModel实例方面没有开销,但我认为这不会对性能产生太大影响
请记住,过早优化是所有问题的根源。如果“高效”指的是更快,那么我猜(不进行测试)使用
FormCollection将更快,因为它没有使用模型绑定的开销
但是这样做的结果可以忽略不计,因此使用FormCollection
将是过早的优化。MVC是用集成的模型绑定设计的,如果您有性能问题,我敢打赌它在其他地方
现在,如果您的意思是在开发人员时间方面高效,那么这完全取决于项目和开发人员
如果表单只发布了几个简单的值,那么使用FromCollection
编码可能比创建模型更快但是如果是这种情况,那么使用参数会更快,并且会键入值<代码>操作结果编辑(int-id、字符串名称、bool-someOtherValue)
。尽管如此,如果您在最简单的项目中使用这两种方法中的任何一种,您很快就会发现您需要创建一个模型。因此,最初快速编写代码的内容将需要更多的开发时间来重构和维护
如果您已经定义了一个OurDomainDataModel
模型,那么传递该模型将更快地编码
如果你真正想问的是
“什么样的代码更优雅、更可维护、更可测试,才能赢得其他使用它的人的尊重?”
然后答案是传递模型或视图模型使用模型或视图模型是最佳实践。