1

我想为文本框显示不同的错误消息,我只使用视图并且我不想使用模型进行验证:

@Html.TextBox("txtFirst", "", htmlAttributes: new { @class = "required email" })

此字段是必需的,并且必须是有效的电子邮件。以上解决了我的问题,但我无法显示不同的验证消息。如果用户未输入值,则错误消息是请输入电子邮件地址。如果电子邮件地址无效,则应显示请输入有效电子邮件。请记住,我不想使用模型进行验证。我只想使用视图。

4

2 回答 2

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,您对自己造成了伤害。

看看我必须写的代码量!ViewModel 提供客户端和服务器端验证。所以你不会因为你只依赖客户端而被烧毁,有人要么通过发送无效数据,要么通过直接通过 URL 发布数据并将不良数据推送到数据库中绕过它

于 2012-05-20T22:05:35.033 回答
0

为什么不想使用数据注释?

仅依赖客户端验证并不是一个好主意,因为用户可能在其浏览器中禁用了 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/

于 2012-05-20T22:16:08.640 回答