【问题标题】:using nested class within class doesnt works in mvc 3在类中使用嵌套类在 mvc 3 中不起作用
【发布时间】:2011-11-17 14:12:15
【问题描述】:

您好,我在一个类中包含了嵌套类以在视图中使用它,但它没有显示下面的嵌套类的属性是该类,我想在视图中使用 sku: 查看:

@model Nop.Web.Models.Catalog.CategoryModel
<div class="product-item">
<h2 class="product-title">
@Model.Name
 </h2>

<div class="description">
      **@Model.ProductVariantModels.Select(x => x.Sku)//doesnt works** // partial class productvariant

</div>
<div class="add-info">
@Model.Name <br/> @Model.FullDescription //values from class CategoryModel 
  </div>
</div>

型号:

public class CategoryModel : BaseEntityModel
{
    public CategoryModel()
    {
        ProductVariantModels = new List<ProductVariantModel>();
    }
public string Name { get; set; }
public string FullDescription { get; set; }
public string MetaKeywords { get; set; }
public string MetaDescription { get; set; }
public string MetaTitle { get; set; }
public IList<ProductVariantModel> ProductVariantModels { get; set; }

public class ProductVariantModel : BaseNopEntityModel
    {
    public string Name { get; set; }
    public bool ShowSku { get; set; }
    public string Sku { get; set; }
    public string Description { get; set; }
    }

}

【问题讨论】:

  • 这是一个嵌套类,不是部分类。
  • 为什么不起作用?会发生什么?

标签: asp.net-mvc asp.net-mvc-3 razor


【解决方案1】:

ProductVariantModelsList。你必须枚举List

@foreach (var pvModel in Model.ProductVariantModels) {
   @pvModel.Sku
}

【讨论】:

  • @if(Model.ProductVariantModels.Count > 0) { foreach(Model.ProductVariantModels 中的 var sku){@sku.Sku } }
  • 根据CategoryModel 类,它没有Sku 属性。只有ProductVariantModelSku
  • 是的,我想使用该属性
【解决方案2】:

如果您使用的是HtmlHelpers,则必须使用带有索引的for 循环而不是foreach 循环。

作为explained really well here,自动模型绑定期望字段输入名称具有像Property.SubProperty.SubSub... 这样的“点”符号,以便在分配时匹配实例属性——但如果您在foreach 循环中呈现它们,它们将不会t 具有完整的表达式,因此不会输出完整的“点”符号。

另见MVC 4 binding nested list of lists result

【讨论】:

    猜你喜欢
    • 2016-11-29
    • 2021-03-17
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2018-11-05
    • 1970-01-01
    • 2011-09-05
    相关资源
    最近更新 更多