视图中的MVC3自定义验证消息

时间:2013-09-16 14:08:49

标签: asp.net-mvc-3 validation

我认为这是一个非常简单的问题,由于某些原因我无法想到该怎么做!

我有以下观点:

 <li>
                        <label>Job Title</label>
                        <%= Html.TextBox("JobTitle",Model.Person.JobTitle, new { type = "text", required = "required", placeholder = "Required" } ) %>
                        <%= Html.ValidationMessage("JobTitle","") %>
                    </li>

如果未填写该字段,则在提交时弹出“请填写此字段”。

我想将此邮件自定义为“请输入您的职位”

我以为我只需要将Person.cs改为:

    /// <summary>
    /// JobTitle
    /// </summary>
    [Required(ErrorMessage = "Please enter your Job Title")]
    [StringLength(128, ErrorMessage = "JoBTitle maximum length is 128")]
    public String JobTitle { get; set; }

但我不能为我的生活想一想对不起!

1 个答案:

答案 0 :(得分:0)

好吧不确定这是否是最好的方法 - 可能不是!但是这样做......

<script type="text/javascript">
    //<![CDATA[
    $(document).ready(function () {
        var elements = document.getElementsByTagName("INPUT");
        for (var i = 0; i < elements.length; i++) {
            elements[i].oninvalid = function (e) {
                var currentId = $(this).attr('id');
                e.target.setCustomValidity("");
                if (!e.target.validity.valid) {
                    if (currentId == "JobTitle") {
                        e.target.setCustomValidity("Please enter your Job Title");
                    }
                    if (currentId == "FirstName") {
                        e.target.setCustomValidity("Please enter your First Name");
                    }
                }
            };
            elements[i].oninput = function (e) {
                e.target.setCustomValidity("");
            };
        }
    })
    //]]>
</script>