我有一个视图模型,如下所示
public class SampleViewModel
{
public Model1 Property1 { get; set; }
}
public class Model1
{
[Required]
public string Name{get; set;}
}
在视图中我们有
@Html.DisplayFor(m=>m.Model1.Name)
@Html.ValidationMessageFor(m=>m.Model1.Name)
在Controller中,我们有
public ActionResult Index()
{
Model1 a= new Model1();
SampleViewModel s= new SampleViewModel();
s.Property1=a;
return View(s);
}
当Name为null时,即使Name具有Required属性,ModelState也不会填充模型错误。我哪里做错了?
1条答案
按热度按时间3htmauhk1#
要实现这一点,您至少应该创建一些
<input>
标签。例如,要使用Html.TextBoxFor()
:如果查看MVC生成的HTML,就可以发现问题。
@Html.TextBoxFor(m => m.Property1.Name)
呈现为以下标记:使用
data-val-required
属性,可以正确验证发布的页面,并且ModelState.IsValid
在没有输入数据时返回false
。或者您可以用途:
类似的问题描述如下:Required string attribute with null value gives IsValid=true in ASP.NET Core 2 Razor Page