繁体   English   中英

在ASP.NET MVC中跟踪从ViewModel到Model的实体跟踪字段

[英]Keeping track of Entity Tracking fields from ViewModel to Model on Update in ASP.NET MVC

无法在控制器的[HttpPost]更新操作方法中使用AutoMapper。

我有诸如CreatedDate,CreatedBy,ModifiedDate,ModifiedBy之类的实体跟踪字段,并且在ViewModel中没有它们作为字段。

当用户在“更新”操作方法中发布表单时,我通常会执行以下操作:

var product = Mapper.Map<Product>(productViewModel);

此时,跟踪字段为空。 我永远也买不到。

看来我有两个选择:

  1. 将跟踪字段添加到视图模型中,并在HTML中将其作为隐藏字段添加,就像“ Id”一样,以便将它们发布回服务器。

  2. 无需创建新的产品对象,而是基于viewModel.Id从数据库中检索产品,然后使用viewModels新值手动覆盖用户可能已经以表格形式编辑的所有值。

有人对此有其他想法或建议吗? 第1步是将多余的数据发送到我不需要的页面,第2步是没有AutoMapper的额外的数据库调用和不干净的代码。

我会使用选项2。

首先,它停止了html注入攻击,用户可以简单地编辑您的html并更改您不打算公开进行编辑的字段。

其次,在向基本模型中编辑或添加字段时很难出错。 在添加额外的属性时,您无需担心,这些属性需要将它们继承到viewModel上。

第三,除非它是一个巨大的对象,否则数据库调用不会增加太多延迟。 用户通常不介意在保存操作上再多花一点时间,这使他们对应用程序实际正在执行的操作感到满意。 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM