ASP.NET MVC 中的 2 个视图模型
2 ViewModel in ASP.NET MVC
型号:
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 个模型。视图中的示例代码:
@(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
他们有相同的。
如何传递字段 Phone
和 NameSurname
?
您不能绑定到多个 class 类型,因此最好的方法是创建一个复合 class 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}");
})
型号:
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 个模型。视图中的示例代码:
@(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
他们有相同的。
如何传递字段 Phone
和 NameSurname
?
您不能绑定到多个 class 类型,因此最好的方法是创建一个复合 class 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}");
})