我想为文本框显示不同的错误消息,我只使用视图,我不想使用模型进行验证:
@Html.TextBox("txtFirst", "", htmlAttributes: new { @class = "required email" })
此字段是必填字段,且必须是有效的电子邮件。以上解决了我的问题,但我无法显示不同的验证消息。如果用户未输入值,则请输入错误消息,请输入电子邮件地址。如果无效的电子邮件地址应显示,请输入有效的电子邮件。请记住,我不想使用模型进行验证。我想只使用视图。
答案 0 :(得分:1)
基本上,通过规避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,这对你自己是一种伤害。
查看我必须编写的代码量! ViewModels提供客户端和服务器端验证。所以你不要因为你只依靠客户端而有人通过直接通过URL发布数据并将不良数据推送到数据库中而发送无效数据或绕过它而烧毁
答案 1 :(得分:0)
为什么不想使用数据注释?
仅依靠客户端验证不是一个好主意,因为用户可以在浏览器中禁用javascript,在HTML5表单验证的情况下使用旧浏览器。这只会导致用户提交无效的表单数据。您应该始终使用客户端/服务器端验证的组合。
我强烈建议您创建一个视图模型并启用数据注释。例如,请注意,必需属性和自定义电子邮件属性的用法用于验证目的:
[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 validation plugin。