我的问题围绕着直接公开实体而不是使用视图模型。使用传统的MVC,您可以执行以下操作:
Employee (Id, FirstName, LastName)
EmployeeDto (Id, Name)
Employee是Entity,而EmployeeDto是ViewModel。
对于Razor页面,PageModel本身是一个视图模型。我的问题是,使用Razor页面公开有限属性集的最佳方法是什么?
在此博客https://www.mikesdotnetting.com/article/315/viewmodels-and-automapper-in-razor-pages中,作者提到最好的方法是在页面模型上包含要显示给最终用户的属性,并使用自动映射器在实体和页面模型之间进行映射。
我的问题是,创建一个类(即EmployeeDto)并将其绑定到Razor页面上会更容易/更好吗?例如。而不是按照博客的说明进行以下操作(这是在要向最终用户公开的页面模型上公开特定的类属性集)。
public class EditModel : PageModel
{
[BindProperty] public EmployeeDto EmployeeDto { get; set; }
public IActionResult OnPost()
{
var employee = new Employee();
_mapper.Map(EmployeeDto, Employee);
return RedirectToPage("./Index");
}
到目前为止,我一直专注于典型的MVC,所以我不确定最佳方法是什么。在我看来,绑定所有单个属性似乎会使您的页面模型混乱,因此我不确定这是否是正确的方法。