Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 输入有效数据时,Html.ValidationSummary不会显示_Asp.net_Asp.net Mvc_Asp.net Mvc 3_Asp.net Ajax - Fatal编程技术网

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

Asp.net 输入有效数据时,Html.ValidationSummary不会显示,asp.net,asp.net-mvc,asp.net-mvc-3,asp.net-ajax,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Asp.net Ajax,我正在做一个使用aspnetmvc3、非结构化javascript和Razor的项目 我对Ajax.BeginForm有一个局部视图,其中包含如下字段: @Html.TextBoxFor(model => model.FirstName, new { @class = "txt-input", placeholder = "Eg. First Name", maxlength = 50 }) @Html.ValidationMessageFor(model => model.Firs

我正在做一个使用aspnetmvc3、非结构化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中,以便在第一次加载空间视图时不显示*或请填写必填字段

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

.field-validation-valid 
{
    display: none;
}
输入有效数据时,如何使验证摘要不可见


提前谢谢!吉列尔莫。

至于它为什么还在显示,我不知道

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

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

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

}
我通常将验证摘要放在对话框中,如果Page.IsValid为true,我就不显示对话框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>

据我所知,你的问题,你可以使用下面的书面代码。这只是一个黑客

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

奇怪,上面写着接线员无法应用于已更新答案类型的操作数,必须选中ModelState而不是Page,客户端是什么意思?在视图上?或者在一篇ajax帖子之后?我用一些我知道有效的东西更新了答案,关于你为什么没有出现,不知道嗨,鲍勃,谢谢你的回复。这个对话框做什么?我是说,这是一个jQuery对话框,不是吗?如果是这样的话,我就不能使用它了,因为业务需要。撇开JQuery不谈,我只是从一个我知道有效的项目中抓取了一段代码片段,如果删除脚本tagHi Praveen,它仍然有效,您的代码的问题是,表单中有多个文本框,如果有多个文本框出现错误,并且我开始通过填充值来修复这些文本框,那么当并非所有文本框都具有有效值时,可以隐藏摘要。这一切是在客户端发生的,还是在视图发回服务器时仍会发生?您是否启用了客户端验证?它似乎位于客户端。我确实启用了客户端验证。