【问题标题】:How to pass a nested model value in @Html.Partial如何在@Html.Partial 中传递嵌套模型值
【发布时间】:2013-03-11 21:24:14
【问题描述】:

我有一个模型作为其中的订单我有一个我试图在@Html.Partial 中使用的对象 代码sn-p

 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) 正在控制器操作中工作,谁能告诉我为什么? 我在网上搜索过,但没有得到任何具体的解决方案,请帮助我?

【问题讨论】:

    标签: asp.net-mvc-3


    【解决方案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
    ...
    

    【讨论】:

      猜你喜欢
      • 2014-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-11
      • 1970-01-01
      • 1970-01-01
      • 2013-12-30
      相关资源
      最近更新 更多