将常规类对象映射到 MVC 模型



我们正在将 asp.net 转换为MVC。 我们有一个框架,它返回常规类对象或数据集。 将类对象映射到 MVC 模型的最佳方法是什么? 请让我知道。

例如

//framework class
public class ISTApplicant
{
public ISTApplicant GetApplicant()
{ 
ISTApplicant objApplicant = new ISTApplicant();
return objApplicant;
}
public Dataset GetApplicants()
{
return ds;
}
}

MVC 模型

public class ApplicantModel
{
public string CustomerNo { get; set; }
public string LastName { get; set; }
public List<ApplicantModel> LstApplicantModel { get; set; }
}

控制器类

public class ApplicantController : Controller
{
//how can i assign framework object to my model, something like this.  
public ActionResult GetApplicant()
{  
ApplicantModel model = myframework.Applicant.GetApplicant();
return mode;
}
public ActionResult GetApplicants()
{
//if it is dataset what is the best way to handle?
LstApplicantModel list =  myframework.GetApplicants();
return list;
}
}

自从我输入它以来,您可能会看到一些错误。

这正是AutoMapper解决的问题: https://automapper.org/

如果您将新的MVC模型定义为使用与现有框架模型相同的属性名称和类型,那么您可以轻松地将一个转换为另一个,否则为单个属性定义显式映射非常简单。

上面链接中的文档非常好,所以没有必要在这里重复,但值得指出的是,映射配置在"from"和"to"对象类型方面是定向的。

例如,如果要从数据库返回对象,然后从 MVC 应用程序提交更新的版本,则需要单独的映射才能从类型 A 转到类型 B,以及从类型 B 返回到类型 A。

代码中有一些内容无法编译。此外,请注意缩进空格,以使代码更具可读性。

假设您已在控制器中正确创建了一个操作,并且ISTApplicant具有与ApplicantModel相同的字段,您可以执行以下操作:

启动.cs文件中:

Mapper.Initialize(cfg => {
cfg.CreateMap<ISTApplicant, ApplicantModel>();
});

然后,在控制器中:

public ActionResult GetApplicant() 
{
ISTApplicant db = myframework.Applicant.GetApplicant();
ApplicantModel model = Mapper.Map<ApplicantModel>(db);
return model;
}

上面的例子是使用自动映射器。请查看如何配置它以及如何正确添加对每个控制器的依赖关系。

我没有通过添加您提到的列表属性来修改示例,因为您应该创建另一个操作来执行此操作,涉及类似的逻辑。

希望对您有所帮助!

最新更新