我有一个模型作为其中的订单我有另一个对象我想在@ 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)正在控制器动作中可以任何人告诉我为什么? 我在网上搜索过但没有得到任何解决方案,所以请帮助我?
答案 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
...