我想为文本框显示不同的错误消息,我只使用视图并且我不想使用模型进行验证:
@Html.TextBox("txtFirst", "", htmlAttributes: new { @class = "required email" })
此字段是必需的,并且必须是有效的电子邮件。以上解决了我的问题,但我无法显示不同的验证消息。如果用户未输入值,则错误消息是请输入电子邮件地址。如果电子邮件地址无效,则应显示请输入有效电子邮件。请记住,我不想使用模型进行验证。我只想使用视图。
我想为文本框显示不同的错误消息,我只使用视图并且我不想使用模型进行验证:
@Html.TextBox("txtFirst", "", htmlAttributes: new { @class = "required email" })
此字段是必需的,并且必须是有效的电子邮件。以上解决了我的问题,但我无法显示不同的验证消息。如果用户未输入值,则错误消息是请输入电子邮件地址。如果电子邮件地址无效,则应显示请输入有效电子邮件。请记住,我不想使用模型进行验证。我只想使用视图。
基本上,通过绕过 MVC 模式,如果不使用 javascript,您将无法获得所需的内容。这会奏效。
将其放在您的输入旁边或下方以显示错误
@Html.Label("lblError", "")
<input type="submit" id="submitButton" value="Save Data" />
//Search By Entity Info
submitButton.onclick = function (event) {
if(isNotEmpty(firstName)) {}; // for multiple fields, put them all into a separate call and return true only if they all are OK
else {
return false;
}
}
//Validation Methods
function isNotEmpty(field) {
var fieldData = field.value;
if (fieldData == null || fieldData.length == 0 || fieldData == "") {
field.className = "FieldError"; // this class "FieldError" would need to use styling CSS to give the field the look that it was in error
var errorMessage = document.getElementById("lblError");
errorMessage.Value = "Error - Your custom text here";
return false;
}
}
这只是一个例子,需要调整
但我强烈建议使用 ViewModels。您还不如直接使用 HTML 而不是 MVC 3 框架。如果不按照应有的方式使用 MVC,您对自己造成了伤害。
看看我必须写的代码量!ViewModel 提供客户端和服务器端验证。所以你不会因为你只依赖客户端而被烧毁,有人要么通过发送无效数据,要么通过直接通过 URL 发布数据并将不良数据推送到数据库中绕过它
为什么不想使用数据注释?
仅依赖客户端验证并不是一个好主意,因为用户可能在其浏览器中禁用了 javascript,而在 HTML5 表单验证的情况下使用的是旧版浏览器。这只会导致用户提交无效的表单数据。您应该始终使用客户端/服务器端验证的组合。
我强烈建议您创建一个视图模型并启用数据注释。例如请注意,出于验证目的使用 required 属性和自定义电子邮件属性:
[Required(ErrorMessage = "Please enter email address"]
[Email(ErrorMessage = "Please enter valid email")]
public string Email { get; set; }
电子邮件验证属性示例:
public class EmailAttribute : RegularExpressionAttribute
{
private const string EmailReg = @"^(?("")("".+?""@)|(([0-9a-zA-Z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-zA-Z])@))(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,6}))$";
public EmailAttribute() : base(EmailReg)
{
}
}
现在,根据您的问题,如果您只想使用客户端验证,那么您绝对不应该依赖 HTML5 表单验证。启用验证的一种快速方法是获取jquery 验证插件。
演示在这里:http: //jquery.bassistance.de/validate/demo/