【发布时间】:2012-01-06 12:08:22
【问题描述】:
我有一个封装了两种复杂类型的 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("..")] 注释,但这并没有什么不同。
我错过了什么?
【问题讨论】:
标签: asp.net-mvc-3 viewmodel data-annotations editorformodel