asp.net-mvc – 哪个更正确:使用UpdateModel()或接收模型作为参数?
发布时间:2020-05-25 10:53:03 所属栏目:asp.Net 来源:互联网
导读:我在文章,书籍和例子中看到过许多创建动作的例子.似乎有两种流行的风格. [AcceptVerbs(HttpVerbs.Post)] public ActionResult Create(FormCollection collection) { try { var contact = Contact.Create(); UpdateMode
|
我在文章,书籍和例子中看到过许多创建动作的例子.似乎有两种流行的风格. [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 – FormsAuthentication:是否安全?
- 如何通过Asp.net WebAPI中的异常过滤器传递内容?
- asp.net-mvc – 如何在MVC中完全分离视图和模型
- asp.net-mvc – 如何在.NET MVC3 HTML表单中的必需可空Date
- .NET发送电子邮件的最佳方法(System.Net.Mail有问题)
- asp.net – 微软的AJAX Toolkit与jQuery
- asp.net – Silverlight初始化错误2110 Internet Explorer
- asp.net-mvc – 在我的ASP.NET MVC网站中缓存不能正常工作?
- asp.net-mvc – 是否可以在基于路由的MVC4中使用不同的布局
推荐文章
站长推荐
- asp.net-mvc – 如何将数据从AuthorizeAttribute
- .net – IIS 6.0和ASPX中的404自定义错误不起作用
- asp.net – 通过javascript禁止文本框中的退格
- 如何杀死会话或会话ID(ASP.NET/C)
- asp.net – ResolveUrl / Url.Content在Classic
- asp.net – 针对ASP .NET会话状态的’InProc’与
- ASP.NET MVC:使用LINQ To SQL获取表单复选框到多
- asp.net-mvc – 在MVC 3中写入只读会话
- asp.net – ClaimsAuthenticationManager与IAuth
- ASP.NET:文字属性中的单引号和双引号
热点阅读
