我是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
模型。
首先是可能的如何。或者,如果不可能,那么任何解决方法都在那里。请帮助我被困,我希望我的问题很明确
答案 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我同时使用它们)。它更好的方式:)。