簡體   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