asp.net-mvc – ASPNET MVC中的Modelbinding数据库实体
发布时间:2020-12-16 06:56:01 所属栏目:asp.Net 来源:网络整理
导读:我无法想到在控制器Action中重新创建数据库对象的最佳方法. 我想使用ModelBinder,因此在我的操作中,我可以通过参数访问对象,而不必重复代码以基于标识符参数从数据库中获取对象.所以我想让一个ModelBinder执行对dataaccess层的调用以获取原始对象(或者如果数
我无法想到在控制器Action中重新创建数据库对象的最佳方法.
我想使用ModelBinder,因此在我的操作中,我可以通过参数访问对象,而不必重复代码以基于标识符参数从数据库中获取对象.所以我想让一个ModelBinder执行对dataaccess层的调用以获取原始对象(或者如果数据库中不存在则创建一个新对象),然后将任何属性绑定到数据库对象以更新它.但是我已经读过ModelBinders不应该进行数据库查询(这个article的第一条评论). 如果ModelBinder不应该执行数据库查询(所以只使用DefaultModelBinder),那么具有其他db对象属性的数据库对象呢?永远不会分配这些. 在用户编辑对象后保存对象(在视图中可以编辑1或2个属性),ModelBinded对象将丢失数据,因此保存它将导致数据库中的数据被无效值覆盖,或者不是 – NULL约束失败. 那么,最好的方法是从数据库中获取控制器操作中的对象,该数据库与从视图中发回的表单数据绑定在一起? 请注意我使用NHibernate. 解决方法
我从数据库中获取模型对象,然后在对象上使用UpdateModel(或TryUpdateModel)来更新表单参数中的值.
public ActionResult Update( int id ) { DataContext dc = new DataContext(); MyModel model = dc.MyModels.Where( m => m.ID == id ).SingleOrDefault(); string[] whitelist = new string[] { "Name","Property1","Property2" }; if (!TryUpdateModel( model,whitelist )) { ... model error handling... return View("Edit"); } ViewData.Model = model; return View("Show"); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何在ASP.NET和C#中加载下拉列表?
- asp.net-mvc – 从数据库显示剃须刀
- asp.net – 使用string.format绑定到文本框
- asp.net – 绝对定位是最佳实践还是我应该避免它?
- asp.net-mvc – 如何在ASP.NET MVC控制器工厂中处理异常
- 如何在ASP.NET MVC 3中正确实施“确认密码”?
- asp.net – 用于检索大量二进制图像的.ashx处理程序的性能
- asp.net-mvc-4 – 使用ASP.NET MVC进行基于声明的授权
- ASP.Net用户名到电子邮件
- asp.net-mvc-3 – ASP.NET MVC视图模型不绑定在HTTP Post与
推荐文章
站长推荐
- asp.net – 使用“dnu publish”排除发布项目上的
- asp.net-mvc – 通过WCF服务实现寻呼机
- asp.net – Visual Studio 2017错误:无法启动程
- asp.net – 用于查询字符串的基本身份验证的IIS重
- asp.net-mvc – 无法在asp mvc项目中从iis上的Co
- ASP.NET存储SQL中的图像并检索Asp:Image
- .net – 如何使单元测试可以使用HttpContext?
- asp.net-mvc – 从控制器重定向初始化不工作
- ASP.Net 3.5 / 4.0 CodeBehind还是CodeFile?
- asp.net-mvc – 为生成的帮助标签添加冒号和星号
热点阅读