具有嵌套必需属性的可选模型属性

时间:2012-09-18 15:44:36

标签: asp.net-mvc

使用以下代码:

public class FooModel {

    public BarModel Bar { get; set; }

}

public class BarModel {

    [Required]
    public string Baz { get; set; }

}

我想在表单中呈现FooModel.Bar,但是它是可选的。但是,如果BarModel.Baz的文本框中没有任何输入,则表单将不会提交。有没有办法让FooModel中的嵌套模型可选而不必删除RequiredAttribute

1 个答案:

答案 0 :(得分:1)

  

有没有办法在FooModel中制作嵌套模型   可选而无需删除RequiredAttribute?

不是我知道的。我建议你使用一个视图模型,它将适应你的视图的要求(即Baz属性可选):

public class FooModel 
{
    public BarViewModelModel Bar { get; set; }
}

public class BarViewModelModel 
{
    public string Baz { get; set; }
}

这就是为什么你应该总是使用视图模型并且永远不会将域模型传递给视图的原因之一。如您所见,您的域模型不适合视图的特定要求。您可以在某些视图中使用某些属性,在其他视图中可以选择。