我有一个包装两种复杂类型的 ViewModel:
public class EditProductViewModel
{
public ProductData ProductData { get; set; }
public FridgeContent FridgeContent { get; set; }
}
这个观点:
@model EditProductViewModel
@using (Html.BeginForm("Edit", "ProductData", FormMethod.Post))
{
@Html.EditorForModel()
[...]
}
ProductData 和 FridgeContent 包含带有 DataAnnotations 的 POCO 属性,如下所示:
public class FridgeContentMetadata : DatabaseEntityMetadataBase
{
[Required]
[HiddenInput(DisplayValue = false)]
public int ProductDataId { get; set; }
[Required]
[UIHint("StringReadOnly")]
public int ScaleId { get; set; }
[Required]
[UIHint("StringReadOnly")]
[Range(0.01, float.MaxValue, ErrorMessage = "The weight of a product must be positive.")]
public float Weight { get; set; }
[...]
}
我想使用来自这些类的适当数据注释和 EditorForModel() 方法在 EditProductView 中编辑 ProductData 和 FridgeContent (我不想自己生成模板)。因此,我在 /Views/Shared/EditorTemplates/ 中创建了模板 ProductData.cshtml 和 FridgeContent.cshtml:
@model FridgeContent
@Html.EditorForModel()
不幸的是,EditProductViewModel 的视图是空的(没有引发错误)。如果我将 EditorForModel 单独用于 FridgeContent 或 ProductData,它工作正常。我还尝试向 EditProductViewModel 添加 [UIHInt("..")] 注释,但这并没有什么不同。
我错过了什么?