使用ModelState MVC进行验证

时间:2012-09-06 14:15:57

标签: c# asp.net-mvc validation

我是MVC的新手所以请帮助我解决我面临的一个简单问题。我有一个课程如下

public class FeedbackViewModel
{
    [Required(ErrorMessage="Please enter feedback summary")]
    public string strSummary { get; set; }

    [Required(ErrorMessage = "Please enter feedback details")]
    public string strDetail { get; set; }
}

然后此FeedbackViewModel在其他视图模型中用作

public class HomeIndexViewModel
{
    public SearchViewModel SearchViewModels { get; set; }
    public FeedbackViewModel FeedBackModel { get; set; }
}

当我执行ModelState.IsValid时我的问题在控制器中(在控制器中传递给动作的模型是HomeIndexViewModel)总是为真,无论我是否在FeedbackViewModel模型的字段中输入了任何值。我需要在此操作中验证FeedbackViewModel模型。

首先是可能的如何。或者,如果不可能,那么任何解决方法都在那里。请帮助我被困,我希望我的问题很明确

1 个答案:

答案 0 :(得分:0)

正如四十二条在上面的评论中所说,不要在模型中保留复杂的物体,这不值得麻烦。当我开始在MVC工作时,我有类似的问题,这些问题通过展平模型来解决。

对于您当前的问题,您可以使用

public class HomeIndexViewModel
{
    public SearchViewModel SearchViewModels { get; set; } // same thing as below.

    [Required(ErrorMessage="Please enter feedback summary")]
    public string FeedBackModelstrSummary  { get; set; }
    [Required(ErrorMessage = "Please enter feedback details")]
    public string FeedBackModelstrDetail  { get; set; }
}

拥有它可以帮助自己使用映射器库从域中的对象解开和平坦(ValueInjecter或AutoMapper我同时使用它们)。它更好的方式:)。