C# 如何在mvc4中向MVC ViewModel写入显示信息
我的第一个问题是 在我的领域中,我有类被调用 学生:C# 如何在mvc4中向MVC ViewModel写入显示信息,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,我的第一个问题是 在我的领域中,我有类被调用 学生: public class Student:Person { [Key] [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] public int UserID { get; set; } public string FirstName { get; set; } public string MiddleName { get; s
public class Student:Person
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserID { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public string EmailAddress { get; set; }
public virtual ICollection<Order> Orders { get; set; }
public virtual Project Project { get; set; }
}
订单:
public class Order
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int OrderID { get; set; }
public DateTime OrderDate { get; set; }
public bool IsCollected { get; set; }
public DateTime CollectionDate { get; set; }
public decimal OrderTotal { get; set; }
public virtual Student Student { get; set; }
public virtual ICollection<Component> Components { get; set; }
public void CheckBudget()
{
}
}
我尝试做两件事:
1) 在视图中显示学生、项目、组件和订单模型中的数据。
2) 使用表单将数据写入视图中的学生、项目、组件和订单模型
请你给我指路
提前感谢您的帮助。您可以为视图创建视图模型,并在控制器中进行准备。 我不确定你想要呈现的信息的结构是什么 假设您希望在此显示
订单信息
为此,创建一个OrderViewModel
,并将视图特定的属性放入其中。不必包括订单中的所有其他属性
public class OrderViewModel
{
public int OrderID { get; set; }
public DateTime OrderDate { get; set; }
public bool IsCollected { get; set; }
public decimal OrderTotal { get; set; }
public Student Student { get; set; }
//add any view specific properties, if needed like IsEditable
}
在命令控制器中
public ActionResult FindOrder(int id)
{
Order order=DBContext.Orders.FindById(id); // get it from repository
OrderViewModel viewModel=new OrderViewModel();
viewModel.Id=order.Id; // etc, etc
//Do this mapping with AutoMapper, recommended
return View(viewModel);
}
在Views/Order/FindOrder.cshtml中
@model OrderViewModel
<div id="order-details">
@using (Html.BeginForm("SaveOrder", "Order", FormMethod.Post, new { @id = "form-orderInfo"}))
{
<label>Name</label>
@Html.TextBoxFor(m => m.Name, new { @id = "order-name" })
<!-- etc -->
}
</div>
public ActionResult SaveOrder(OrderViewModel model)
{
Order order= prepare this from OrderViewModel object. Use AutoMapper
}
@model orderview模型
@使用(Html.BeginForm(“SaveOrder”、“Order”、FormMethod.Post、new{@id=“formorderinfo”}))
{
名称
@TextBoxFor(m=>m.Name,新的{@id=“ordername”})
}
公共操作结果保存订单(OrderViewModel模型)
{
Order Order=从OrderViewModel对象准备此项。使用AutoMapper
}
了解您想要显示的具体内容?什么是最终视图到目前为止,您的视图中有什么,或者您只是不确定如何开始?您的视图模型只是域模型的组合,而它应该是其他视图模型的组合。因此
Student
应该有一个视图模型(即StudentModel
)。其他属性的计数相同。你的解决方案不能完全解决这个问题。
public class OrderViewModel
{
public int OrderID { get; set; }
public DateTime OrderDate { get; set; }
public bool IsCollected { get; set; }
public decimal OrderTotal { get; set; }
public Student Student { get; set; }
//add any view specific properties, if needed like IsEditable
}
public ActionResult FindOrder(int id)
{
Order order=DBContext.Orders.FindById(id); // get it from repository
OrderViewModel viewModel=new OrderViewModel();
viewModel.Id=order.Id; // etc, etc
//Do this mapping with AutoMapper, recommended
return View(viewModel);
}
@model OrderViewModel
<div id="order-details">
@using (Html.BeginForm("SaveOrder", "Order", FormMethod.Post, new { @id = "form-orderInfo"}))
{
<label>Name</label>
@Html.TextBoxFor(m => m.Name, new { @id = "order-name" })
<!-- etc -->
}
</div>
public ActionResult SaveOrder(OrderViewModel model)
{
Order order= prepare this from OrderViewModel object. Use AutoMapper
}