gpt4 book ai didi

c# - 如何在不发出其他请求的情况下在编辑操作中使用 ViewModel?

转载 作者:太空宇宙 更新时间:2023-11-03 21:23:05 25 4
gpt4 key购买 nike

我需要关于这个特殊案例的具体答案或解决方案,我有 EditVehicleViewModel 像这样传递给 Edit Vehicle Controller Action

public async Task<ActionResult> Edit(EditVehicleViewModel vehiclViewModel)
{
if (ModelState.IsValid)
{

// I NEED TO MAP THE VIEW_MODEL TO THE MODEL HERE

db.Entry(vehicleModel).State = EntityState.Modified;
await db.SaveChangesAsync();
return RedirectToAction("Index");
}

return View(vehiclViewModel);
}

我需要根据对 ViewModel 所做的更改来更新模型,而不是请求获取已更改的 Vehicle 和 SaveChanges() ,同时仍然使用这行代码如果可能的话

db.Entry(vehiclViewModel).State = EntityState.Modified;

编辑这是我的模型和 ViewModel

ViewModel

public class EditVehicleViewModel
{
[Required]
public string LicenceNumber { get; set; }

public int? Year { get; set; }

public string Color { get; set; }

[DataType(DataType.Upload)]
public HttpPostedFileBase ImageUpload { get; set; }

public string VINNumber { get; set; }
}

模型

public class Vehicle
{
public int ID { get; set; }

[Required]
public string LicenceNumber { get; set; }

[Required]
public Nullable<DateTime> Year { get; set; }

[Required]
public string Color { get; set; }

[DataType(DataType.ImageUrl)]
public string ImageUrl { get; set; }

[Required]
public string VINNumber { get; set; }
}

最佳答案

首先,您必须从 nuget 安装以下任一软件包,

PM> 安装包TinyMapper

PM> 安装包 AutoMapper

然后添加你的代码,如果使用了tinymapper

TinyMapper.Bind<Vehicle, EditVehicleViewModel>();
Vehicle vehicleModel = TinyMapper.Map<EditVehicleViewModel>(vehiclViewModel);
db.Entry(vehicleModel).State = EntityState.Modified;

如果使用自动映射器,

Mapper.CreateMap<Vehicle , EditVehicleViewModel>();
Vehicle vehicleModel = Mapper.Map<EditVehicleViewModel>(vehiclViewModel);
db.Entry(vehicleModel).State = EntityState.Modified;

关于c# - 如何在不发出其他请求的情况下在编辑操作中使用 ViewModel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29303444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com