下午好。
我的問題是,我的控制器中有 2 個編輯方法 - 獲取和發布。
[HttpGet]
public async Task<IActionResult> Edit(Guid id)
{
var article = await _articleService.GetArticleAsync(id);
var resultModel = _mapper.Map<ArticleDetailViewModel>(article);
return View(resultModel);
}
[HttpPost]
public async Task<IActionResult> Edit(ArticleDetailViewModel model)
{
await _articleService.UpdateArticle(_mapper.Map<ArticleDTO>(model));
return RedirectToAction("Index", "Article");
}
文章的 Guid id 進入 Edit get 方法。有了這個 id,我找到了整個 ArticleDTO 物件并使用自動映射器將其轉換為 ArticleDetailViewModel。接下來,我將此模型傳遞給視圖。在 Index post 方法中,對文章的更改使用 UpdateArticle(ArticleDTO) 方法進行編輯和保存。在這種方法中,我必須手動從 2 個物體中收集一個物體并保存。
public async Task UpdateArticle(ArticleDTO model)
{
var entity = await _unitOfWork.Articles.GetByIdAsync(model.Id);
var articleResult = new Article()
{
Id = model.Id,
Title = model.Title,
Description = model.Description,
Body = model.Body,
CreationDate = model.CreationDate,
PositivityGrade = entity.PositivityGrade,
Comments = entity.Comments,
Source = entity.Source,
SourceId = entity.SourceId
};
_unitOfWork.Articles.Update(articleResult);
await _unitOfWork.Comit();
}
請告訴我如何避免這種情況,并使用 Automapper 以免手動進行。或者也許還有其他方法。
uj5u.com熱心網友回復:
我認為這可能是你想要的:
public async Task UpdateArticle(ArticleDTO model)
{
var entity = await _unitOfWork.Articles.GetByIdAsync(model.Id);
var articleResult = _mapper.Map(model, entity)
_unitOfWork.Articles.Update(articleResult);
await _unitOfWork.Comit();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/525088.html
下一篇:我無法捕捉復選框輸入的值
