3

我是 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在此操作中验证模型。

首先是否可能,然后如何。或者如果不可能,那么任何解决方法都在那里。请帮助我卡住了,我希望我的问题很清楚

4

1 回答 1

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 我都使用)。这样更好:)。

于 2012-09-18T06:34:54.460 回答