我有两个模型:
public class Person
{
public int PersonID { get; set; }
public string PersonName { get; set; }
}
public class Order
{
public int OrderID { get; set; }
public int TotalSum { get; set; }
}
我希望在单个视图中编辑这两个类的对象,因此我需要如下内容:
@model _try2models.Models.Person
@model _try2models.Models.Order
@using(Html.BeginForm())
{
@Html.EditorFor(x => x.PersonID)
@Html.EditorFor(x => x.PersonName)
@Html.EditorFor(x=>x.OrderID)
@Html.EditorFor(x => x.TotalSum)
}
当然,这是行不通的:在一个.cshtml文件中只允许有一个“模型”语句。可能有一些变通的方法?
发布于 2011-04-05 18:51:28
创建包含两个模型的父视图模型。
public class MainPageModel{
public Model1 Model1{get; set;}
public Model2 Model2{get; set;}
}
通过这种方式,您可以在以后以最小的工作量添加其他模型。
发布于 2012-12-11 12:07:53
要使用元组,您需要执行以下操作,在视图中将模型更改为:
@model Tuple<Person,Order>
要使用@html方法,您需要执行以下操作,即:
@Html.DisplayNameFor(tuple => tuple.Item1.PersonId)
或
@Html.ActionLink("Edit", "Edit", new { id=Model.Item1.Id }) |
元组表示传递给Item1方法的第一个参数,您可以使用Item2访问第二个模型,依此类推。
在您的控制器中,您需要创建一个类型为Tuple的变量,然后将其传递给视图:
public ActionResult Details(int id = 0)
{
Person person = db.Persons.Find(id);
if (person == null)
{
return HttpNotFound();
}
var tuple = new Tuple<Person, Order>(person,new Order());
return View(tuple);
}
发布于 2011-09-27 00:58:40
https://stackoverflow.com/questions/5550627
复制相似问题