Asp.net核心ViewView中的2个Razor Pages ViewModel

时间:2018-09-11 17:23:36

标签: c# asp.net asp.net-mvc razor

我的问题围绕着直接公开实体而不是使用视图模型。使用传统的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,所以我不确定最佳方法是什么。在我看来,绑定所有单个属性似乎会使您的页面模型混乱,因此我不确定这是否是正确的方法。

0 个答案:

没有答案