C# 没有发布数据时,MVC Razor验证错误显示在页面加载上
我把数据注释弄得一团糟。当我点击一个链接进入一个页面时,会显示验证消息,但我希望验证消息不会显示,除非数据已经发布 视图: 型号:C# 没有发布数据时,MVC Razor验证错误显示在页面加载上,c#,asp.net-mvc,razor,data-annotations,asp.net-mvc-validation,C#,Asp.net Mvc,Razor,Data Annotations,Asp.net Mvc Validation,我把数据注释弄得一团糟。当我点击一个链接进入一个页面时,会显示验证消息,但我希望验证消息不会显示,除非数据已经发布 视图: 型号: [Required(ErrorMessage = "Email is required")] [DataType(DataType.EmailAddress)] [EmailAddress] [Display(Name = "Email Address: ")] public string EmailAddress { get; set; } 控制器: [Http
[Required(ErrorMessage = "Email is required")]
[DataType(DataType.EmailAddress)]
[EmailAddress]
[Display(Name = "Email Address: ")]
public string EmailAddress { get; set; }
控制器:
[HttpGet]
public ActionResult AddUser()
{
return View();
}
[HttpPost]
public ActionResult AddUser(UserCreateViewModel user)
{
if (ModelState.IsValid)
{
var success = UserRepository.AddUser(user);
if (success)
{
return View("Success");
}
}
return View("AddUser");
}
正如我所说,我的问题发生在AddUser视图的页面加载上。当我点击链接查看AddUser页面时,加载后会显示验证消息,但此时没有发布数据,模型为空。将验证样式设置为:
.validation-summary-valid { display:none; }
所以默认情况下它是隐藏的。错误将触发它显示。绑定用户后,您可以清除模型状态:
ModelState.Clear();
这是因为ModelBinder
将在绑定时设置ModelState
。
在绑定模型并返回具有相同模型的视图的每个操作中,您都会遇到此问题
[HttpPost]
public ActionResult AddUser(UserCreateViewModel user)
{
if (ModelState.IsValid)
{
var success = UserRepository.AddUser(user);
if (success)
{
return View("Success");
}
}
ModelState.Clear(); // <-------
return View("AddUser");
}
[HttpPost]
公共操作结果AddUser(UserCreateViewModel用户)
{
if(ModelState.IsValid)
{
var success=UserRepository.AddUser(用户);
如果(成功)
{
返回视图(“成功”);
}
}
ModelState.Clear();//$('.field validation error').html(“”;
每当页面加载时触发验证时,该“.field validation valid”值将自动添加到触发的输入元素的class属性中
通过添加CSS将none显示为特定类的值,您将不再在初始页面加载时看到验证消息
触摸特定输入元素后,验证消息仍将正常显示。我使用的是自定义CSS文件,已停止包含旧的Site.CSS(其中包含您的上述修复)修复了我的问题。我们到底为什么需要手动操作。为什么它不是由框架本身处理的。:-|这很可能是因为默认的Site.css已更改或丢失。是否愿意解释这如何回答OP的问题?这对OP没有帮助,但对我有帮助。非常感谢!这对我很有帮助。我添加了ModelState.Clear()这是隐藏!!好朋友(y)
[HttpPost]
public ActionResult AddUser(UserCreateViewModel user)
{
if (ModelState.IsValid)
{
var success = UserRepository.AddUser(user);
if (success)
{
return View("Success");
}
}
ModelState.Clear(); // <-------
return View("AddUser");
}
.field-validation-valid {
display: none;
}