asp.net-mvc – 哪个更正确:使用UpdateModel()或接收模型作为参
发布时间:2020-12-16 04:07:18 所属栏目:asp.Net 来源:网络整理
导读:我在文章,书籍和例子中看到过许多创建动作的例子.似乎有两种流行的风格. [AcceptVerbs(HttpVerbs.Post)] public ActionResult Create(FormCollection collection) { try { var contact = Contact.Create(); UpdateModelContact(contact); contact.Save(); re
我在文章,书籍和例子中看到过许多创建动作的例子.似乎有两种流行的风格.
[AcceptVerbs(HttpVerbs.Post)] public ActionResult Create(FormCollection collection) { try { var contact = Contact.Create(); UpdateModel<Contact>(contact); contact.Save(); return RedirectToAction("Index"); } catch (InvalidOperationException ex) { return View(); } } 和… [AcceptVerbs(HttpVerbs.Post)] public ActionResult Create([Bind(Exclude="Id")]Contact contact) { try { contact.Save(); // ... assumes model does validation return RedirectToAction("Index"); } catch (Exception ex) { // ... have to handle model exceptions and populate ModelState errors // ... either here or in the model's validation return View(); } } 我已经尝试了两种方法,并且都有优点和缺点,IMO. 例如,当使用FormCollection版本时,我必须在我的模型绑定器中手动处理“Id”,因为绑定/排除在此处不起作用.使用方法的类型化版本,我根本不能使用模型绑定器.我喜欢使用模型绑定器,因为它允许我填充ModelState错误,而不需要在模型的验证代码中了解ModelState. 任何见解? 更新: 解决方法
如果要更新已存在的模型对象,可以使用UpdateModel,您可以从数据库获取该模型对象,或者希望以某种特定方式实例化模型对象
例如: [AcceptVerbs(HttpVerbs.Post)] public ActionResult EditEmployee(int id,FormCollection collection) { try { Contact contact = repository.getContact(id); UpdateModel(contact,collection.ToValueProvider()); repository.save(); return RedirectToAction("Index"); } catch { //Handle return View(); } } 如果您没有上述要求,请将其作为操作参数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-3 – MailTo链接在Razor
- .net – 使用OData $select来从相关对象中挑选字段
- 二、Asp.Net Core WebAPI——OcelotDemo
- asp.net-core – 如何在IIS上运行ASP.NET MVC6而不发布应用
- asp.net-mvc – ASP.NET向razor添加id ActionLink
- 如何以编程方式将触发器添加到ASP.NET UpdatePanel?
- asp.net-mvc-5 – MVC5:我在哪里可以获得System.Web.Mvc.p
- asp.net-mvc-routing – MVC 5路由和可选参数
- asp.net-mvc – 返回空ActionResult
- 在ASP.Net Web应用程序中使用Rails应用程序中的用户/身份验
推荐文章
站长推荐
- asp.net-mvc – 允许使用ASP-MVC和表单身份验证访
- asp.net – 什么是Appdomain回收
- 如何在IIS7 for ASP.NET中创建虚拟目录?
- asp.net-mvc-3 – ASP.NET MVC DropDownListFor从
- ASP.NET Core中的依赖注入(4): 构造函数的选择
- ASP.net:我可以在bin文件夹中拥有2个不同版本的
- asp.net-mvc-2 – MVC源代码单例模式
- ASP.NET:更好地在资源或数据库中存储可本地化的
- ASP.NET Web Forms 4.5模型绑定,其中模型包含一个
- asp.net-mvc-4 – 如何在Jquery DataTable中获取
热点阅读