如何在@ Html.Partial中传递嵌套模型值

时间:2013-03-11 13:02:09

标签: asp.net-mvc-3

我有一个模型作为其中的订单我有另一个对象我想在@ Html.Partial中使用 代码段

 public class Order{
   public string Id{set;get;}
   public Address BillingAdress{set;get;}
   public Address ShippingAddress{set;get;}
 }

 public class Address{
   public int Id{set;get;}
   public string Address{set;get;}
 }

视图

  @model Order
  OrderId: 
  @Html.TextBoxFor(x=>Model.Id)

  ShippingAdress: 
  @Html.Partial("Adress", Model.ShippingAdress)

  BillingAddress:
  @Html.Partial("Adress", Model.BillingAdress)

这不起作用。 但是当我传递Model而不是Model.ShippingAdress和Model.BillingAdress时,TryUpdateModel(Order)正在控制器动作中可以任何人告诉我为什么? 我在网上搜索过但没有得到任何解决方案,所以请帮助我?

1 个答案:

答案 0 :(得分:1)

原因是因为Partial不遵守输入字段的命名约定。改为使用编辑器模板:

@model Order
OrderId: 
@Html.TextBoxFor(x => x.Id)

ShippingAdress: 
@Html.EditorFor(x => x.ShippingAdress)

BillingAddress:
@Html.EditorFor(x => x.BillingAdress)

现在将您的Adress.cshtml移至~/Views/Shared/EditorTemplates/Address.cshtml。模板的名称和位置很重要。它应位于~/Views/Shared/EditorTemplates中,并以与模型类型(Address.cshtml)相同的方式命名:

@model Address
...