【问题标题】:2 ViewModel in ASP.NET MVC2 ASP.NET MVC 中的视图模型
【发布时间】:2015-05-29 06:55:06
【问题描述】:

型号:

public class Order
{
    [ScaffoldColumn(false)]
    public int Id { get; set; }        

    public string UserName { get; set; }       

    public int Amount { get; set; }      

    [ScaffoldColumn(false)]
    public Guid UniqueId { get; set; }

    public DateTime CreateDate { get; set; }

    public string ManagerId { get; set; }     

}

 public class UserProfile
{
    public int Id { get; set; }

    public string Username { get; set; }

    public string Phone { get; set; }

    [StringLength(255)]
    public string NameSurname { get; set; }

    public bool IsCompany { get; set; }
}

我需要在Kendo Grid 中显示 2 个模型。 View中的示例代码:

@(Html.Kendo().Grid<oko.Models.OrderDto>().Name("NewOrders").Columns(columns =>
{       
    columns.Bound(s => s.Username);
    columns.Bound(s => s.NameSurname);
    columns.Bound(s => s.Phone);
    columns.Bound(s => s.CreateDate).Format("{0:dd/MM/yyyy}");  
})

字段UserName 他们有相同的。 如何传递PhoneNameSurname字段?

【问题讨论】:

    标签: c# asp.net-mvc kendo-ui


    【解决方案1】:

    您不能绑定到多个类类型,因此最好的方法是创建一个复合类 ViewModel 来保存您需要的属性。将其填充到您的控制器中,并将其传递回模型。

    示例视图模型

    public class OrderDtoViewModel
    {
        public string UserName { get; set; }
        public string NameSurname { get; set; }
        public string Phone { get; set; }
        public DateTime CreateDate { get; set; }
    
        //etc...
    }
    

    控制器

    public class MyController
    {
        public ActionResult Index()
        {
            var data = _myRepository.GetYourData();
    
            var viewModel = new OrderDto()
            {
                UserName = data.UserName,
                NameSurname = data.NameSurname,
                Phone = data.Phone,
                CreateDate = data.CreateDate
            };
    
            return View(data)
        }
    }
    

    然后在您的 Kendo 网格中,使用您的复合视图模型(在上面的示例中称为 OrderDtoViewModel

    @(Html.Kendo().Grid<oko.Models.OrderDtoViewModel>().Name("NewOrders").Columns(columns =>
    {       
        columns.Bound(s => s.Username);
        columns.Bound(s => s.NameSurname);
        columns.Bound(s => s.Phone);
        columns.Bound(s => s.CreateDate).Format("{0:dd/MM/yyyy}");  
    })
    

    【讨论】:

      猜你喜欢
      • 2021-01-05
      • 2010-11-24
      • 1970-01-01
      • 2010-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-06
      相关资源
      最近更新 更多