加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – [HttpPost] public ActionResult Create(FormCol

发布时间:2020-12-16 03:53:39 所属栏目:asp.Net 来源:网络整理
导读:在Scott Hanselman的书(第1章)中,他为我们提供了两个实现[HttpPost] for Create action方法的选项. 第一个依赖于TryUpdateModel来根据传入的表单字段更新模型对象.当传入的表单字段包含无效输入时,ModelState.IsValid将设置为false. [HttpPost] public Actio
在Scott Hanselman的书(第1章)中,他为我们提供了两个实现[HttpPost] for Create action方法的选项.

第一个依赖于TryUpdateModel来根据传入的表单字段更新模型对象.当传入的表单字段包含无效输入时,ModelState.IsValid将设置为false.

[HttpPost]
        public ActionResult Create(FormCollection collection)
        {
            Dinner dinner = new Dinner();

            if (TryUpdateModel(dinner))
            {
                dinnerRepository.Add(dinner);

                dinnerRepository.Save();

                return RedirectToAction("Details",new { id = dinner.DinnerId });
            }
            else
                return View(dinner);

        }

第二种方法是利用作为Create action方法arg传递的模型如下:

[HttpPost]
        public ActionResult Create(Dinner dinner)
        {
            if (ModelState.IsValid)
            {
                dinnerRepository.Add(dinner);

                dinnerRepository.Save();

                return RedirectToAction("Details",new { id = dinner.DinnerId });
            }
            else
                return View(dinner);
        }

哪一个更适合在生产中使用?

解决方法

如果所有必需的数据都在Request.Form,路由数据或URL查询字符串中,那么您可以使用模型绑定,如第二个示例中所示.

模型绑定器创建您的晚餐对象,并通过匹配属性名称使用请求中的数据填充它.

您可以使用“白名单”,“黑名单”,前缀和标记界面自定义绑定过程.
只要确保你没有无意中绑定值 – 请参阅此link.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读