输入有效数据时,Html.ValidationSummary不会显示

时间:2011-11-16 16:40:36

标签: asp.net asp.net-mvc asp.net-mvc-3 asp.net-ajax

我正在开发一个使用ASPNET MVC 3,不引人注目的javascript和Razor的项目

我有Ajax.BeginForm的部分视图,其中包含如下字段:

@Html.TextBoxFor(model => model.FirstName, new { @class = "txt-input", placeholder = "Eg. First Name", maxlength = 50 })
@Html.ValidationMessageFor(model => model.FirstName, "*", new { @class = "form-comments redtxt" })

然后在表格的最后我有这个:

@Html.ValidationSummary(false, "Please complete the required fields", new { @class = "form-comments redtxt" })

如果我未输入任何值,则会在文本框附近正确显示"*",并在验证摘要中显示“请填写必填字段”。 问题是,当我输入正确的值时,只有"*"无效,并且“请填写必填字段”仍然存在。

我需要在css中添加此内容,以便在第一次加载patial视图时不显示"*"或“请填写必填字段”。

.validation-summary-valid
{
    display: none;
}

.field-validation-valid 
{
    display: none;
}

如果输入有效数据,如何使验证摘要消失?

提前致谢!吉列尔莫。

2 个答案:

答案 0 :(得分:0)

为什么它还在显示我不知道。

但快速解决方法是在@Html.ValidationSummary周围放置一个if块并检查模型是否有效

@ if(!ViewContext.ViewData.ModelState.IsValid){

@Html.ValidationSummary(false, "Please complete the required fields", new { @class = "form-comments redtxt" })

}

我通常把我的验证摘要放在一个对话框中,如果Page.IsValid为真,我就不显示对话框div

- 这里更新是我知道的代码片段

    @{ if(!ViewContext.ViewData.ModelState.IsValid){
<div id="errors" class="DisplayErrors">
 @Html.ValidationSummary()
</div>
}}
<script type="text/javascript">
    $(function () {
        $(".Date").datepicker();
        $(".button").button();
        $(".DisplayErrors").dialog({ autoOpen: true, title:"Errors" });
    });
</script>

答案 1 :(得分:0)

据我了解你的问题,你可以使用下面的代码。它只是一个黑客。

<script>
    jQuery(function () {
        jQuery('form')
        .find('input')
        .bind('keyup', function () {
            var _summary = jQuery('.form-comments');
            if ($(this).valid()) {
                _summary.hide();
            }
            else {
                _summary.show();
            }
        })
    });
</script>