2 つの複雑な型をラップする 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 の両方を編集したい (自分でテンプレートを生成したくない)。したがって、ProductData.cshtml と FridgeContent.cshtml のテンプレートを /Views/Shared/EditorTemplates/ に作成しました。
@model FridgeContent
@Html.EditorForModel()
残念ながら、EditProductViewModel のビューは空です (エラーは発生しません)。FridgeContent または ProductData のいずれかに単独で EditorForModel を使用すると、正常に動作します。[UIHint("..")] 注釈を EditProductViewModel に追加しようとしましたが、違いはありません。
私は何が欠けていますか?