在ASP.NET Core MVC中使用视图模型是可以提高代码可维护性和可扩展性的最佳实践。以下是一些实现视图模型的最佳实践:
DTO是一个简单的POCO(普通旧CLR对象),它只包含要在视图中显示的属性。使用DTO可以确保不会向视图公开不需要的数据。
下面是一个DTO的示例:
public class CustomerDTO { public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } }
领域模型是应用程序的核心对象,它代表了业务逻辑。但是,在视图中直接使用领域模型对象会破坏封装性和数据完整性。因此,应该将领域模型转换为DTO,然后将其传递给视图。
下面是一个错误示例:
public class CustomerController : Controller { private readonly ICustomerService _customerService;
public CustomerController(ICustomerService customerService)
{
_customerService = customerService;
}
public IActionResult Index(int id)
{
var customer = _customerService.Get(id);
return View(customer);
}
}
正确的方式是将领域模型转换为DTO,然后将DTO传递给视图:
public class CustomerController : Controller { private readonly ICustomerService _customerService;
public CustomerController(ICustomerService customerService)
{
_customerService = customerService;
}
public IActionResult Index(int id)
{
var customer = _customerService.Get(id);
var customerDto = MapToDto(customer);
return View(customerDto);
}
private CustomerDTO MapToDto(Customer customer)
{
return new CustomerDTO
{
Id