Asp.net mvc 对于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编辑操作方法,哪个重载最有效

  • [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
    模型,那么传递该模型将更快地编码

    如果你真正想问的是

    “什么样的代码更优雅、更可维护、更可测试,才能赢得其他使用它的人的尊重?”


    然后答案是传递模型或视图模型

    使用模型或视图模型是最佳实践。