Asp.net mvc 3 数据类型属性不起作用
在ASP.NET MVC 3 web应用程序中,我有一个viewmodel,其属性用数据类型属性标记,但它们在客户端不进行实际验证,而在服务器端,为什么Asp.net mvc 3 数据类型属性不起作用,asp.net-mvc-3,validation,attributes,asp.net-mvc-validation,Asp.net Mvc 3,Validation,Attributes,Asp.net Mvc Validation,在ASP.NET MVC 3 web应用程序中,我有一个viewmodel,其属性用数据类型属性标记,但它们在客户端不进行实际验证,而在服务器端,为什么 public class RegisterModel { [Required(ErrorMessage = "Phone number is required")] [DataType(DataType.PhoneNumber)] [Display(Name = "Phone number")] public s
public class RegisterModel
{
[Required(ErrorMessage = "Phone number is required")]
[DataType(DataType.PhoneNumber)]
[Display(Name = "Phone number")]
public string PhoneNumber { get; set; }
[Required(ErrorMessage = "E-mail address is required")]
[DataType(DataType.EmailAddress, ErrorMessage = "Please enter a valid date (ex: 2/14/2011)")]
[Display(Name = "E-mail address")]
public string Email { get; set; }
}
感谢您的回复。您是否包括:
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
你是否包括:
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
数据类型属性不能用于验证用户输入。它们仅提供使用模板辅助程序呈现值的提示 如果没有用于所需内容(例如范围或必需内容)的内置验证属性,则应创建自定义特性验证属性,并使用该属性装饰模型特性以进行验证。例如,对于DataType.EmailAddress
这在Pro Asp.net mvc 3框架Adam Freeman和Steve Sanderson(第618页)中有描述,数据类型属性不能用于验证用户输入。它们仅提供使用模板辅助程序呈现值的提示 如果没有用于所需内容(例如范围或必需内容)的内置验证属性,则应创建自定义特性验证属性,并使用该属性装饰模型特性以进行验证。例如,对于DataType.EmailAddress
这在Pro Asp.net mvc 3框架Adam Freeman和Steve Sanderson(第618页)中有描述,我同意数据类型属性不执行任何验证的事实。但您已经在适当的位置设置了必需的属性,该属性应该可以工作 必须放置一个窗体才能呈现属性的控件。当表单发布在提交页面上时,单击 假设您的表单已发布到下面的方法
[HttpPost]
public ActionResult SaveRegisterDetails(Register registerDetails)
{
if (ModelState.IsValid)
return View();
else
return View("Index", registerDetails);
}
将ViewModel对象作为参数传递。从表单发布的所有值都将出现在此对象中。然后检查ModelState是否有效。如果无效,则返回表单发布位置的相同视图,并将ViewModel对象作为参数传递
如果您使用的是EditorForModel或DisplayForModel,则使用ValidationSummary helper在UI上显示错误消息。我同意DataType属性不执行任何验证的事实。但您已经在适当的位置设置了必需的属性,该属性应该可以工作 必须放置一个窗体才能呈现属性的控件。当表单发布在提交页面上时,单击 假设您的表单已发布到下面的方法
[HttpPost]
public ActionResult SaveRegisterDetails(Register registerDetails)
{
if (ModelState.IsValid)
return View();
else
return View("Index", registerDetails);
}
将ViewModel对象作为参数传递。从表单发布的所有值都将出现在此对象中。然后检查ModelState是否有效。如果无效,则返回表单发布位置的相同视图,并将ViewModel对象作为参数传递
如果您使用的是EditorForModel或DisplayForModel,那么请使用ValidationSummary helper在UI上显示错误消息。对于.NET framework 4.5及更高版本,有一个名为[EmailAddress]的验证属性,请将其用于如下属性
[Required]
[DataType(DataType.EmailAddress)]
[EmailAddress(ErrorMessageResourceName = "MustBeEmail", ErrorMessageResourceType = typeof(Resources))]
public string Email { get; set; }
另外,别忘了确保在web.config文件中启用了客户端验证和非干扰性验证
并将js文件包含在razor中。对于.NET framework 4.5及更高版本,有一个名为[EmailAddress]的验证属性,将其用于您的属性,如下所示
[Required]
[DataType(DataType.EmailAddress)]
[EmailAddress(ErrorMessageResourceName = "MustBeEmail", ErrorMessageResourceType = typeof(Resources))]
public string Email { get; set; }
另外,别忘了确保在web.config文件中启用了客户端验证和非干扰性验证
并在razor中包含js文件。还添加了web.config文件。请参见上文。此答案仅与启用客户端验证的问题有关。这与您的问题无关。也添加了web.config位。请参见上文。此答案仅与启用客户端验证的问题有关。这与你的问题无关。