EnableClientValidation导致字段消失

时间:2010-07-09 00:27:17

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

我有一个带有局部视图的MVC应用程序(如下)。当我添加Html.EnableClientValidation()时,我的字段在退出时会消失。我不希望任何人从代码中弄明白,但如果有人看到这样的行为并且可以指出我正确的方向,我会很感激。与此同时,我将逐一重新开始重建,看看我能看到什么并报告回来。

谢谢!

<%= Html.ValidationSummary() %>
<% Html.EnableClientValidation(); // IMPORTANT: this line MUST be *before* Html.BeginForm() block %>
<% using (Ajax.BeginForm("Save", "Items", new AjaxOptions { HttpMethod = "post", InsertionMode = InsertionMode.Replace, UpdateTargetId = "ItemPane"})){%>
<%=Html.AntiForgeryToken()%>
<%=Html.Hidden("Item.Id", (ViewData.Model.Item != null) ? ViewData.Model.Item.Id : Guid.Empty)%>
 <!--more hidden items elided-->
   <table> <!--yes, I know it should be divs-->
       <tr>
           <td rowspan="2" width="400px">
            <div class="formarea">
            <fieldset>
                <ol>
                    <li>
                        <label id="Item_Label"><%= (ViewData.Model != null && ViewData.Model.Item != null) ? String.Format("Item Number {0} v. {1}",  ViewData.Model.Item.ItemNumber, ViewData.Model.Item.Iteration) : "New Item" %></label>
                    </li>
                    <li>
                        <label for="Item_Prompt" class="formLabel">Directions:</label>
                        <%=Html.TextAreaFor(t => t.Item.Directions, 3, 50, new { @class = "text2000", @maxlength = "2000" })%>
                        <%= Html.ValidationMessageFor(t => t.Item.Directions, "*")%>
                    </li>
                    <li>
                        <label for="Item_Prompt" class="formLabel">Prompt:</label>
                        <%= Html.TextBoxFor(model => model.Item.Prompt, new { @class = "text200", @maxlength = "200" })%>
                        <%= Html.ValidationMessageFor(model => model.Item.Prompt, "*")%>

                    </li>

我有以下脚本参考:

<%= Html.Script("~/Scripts/MicrosoftAjax.debug.js") %>
<%= Html.Script("~/Scripts/MicrosoftMvcAjax.debug.js") %>
<%= Html.Script("~/Scripts/jquery-1.4.2.min.js") %>
<%= Html.Script("~/Scripts/jquery-ui-1.8.2.custom.min.js") %>
<%= Html.Script("~/Scripts/jquery.form.js") %>
<%= Html.Script("~/Scripts/MicrosoftMvcValidation.js") %>

2 个答案:

答案 0 :(得分:0)

想出来 - 这是来自先前与this code的dalliance的css:

/ ------------------------------------------- --------------- ASP.NET MVC FRAMEWORK DEFAULT CSS CLASS NAMES -------------------------------------------------- -------- / .error,点域验证错误{颜色:红}

。输入验证-有效,点域验证-有效,.validation-汇总有效{显示:无} .input-validation-error {background-color:#fee; border:1px solid red;大纲:无} 。输入验证错误:重点{大纲:无} input [type =“text”] .input-validation-error:focus,select.input-validation-error:focus {outline:none}

.validation-汇总错误{颜色:红} .validation-summary-errors跨越{font-weight:700} .validation-summary-errors ul {list-style:disc inside} .validation-summary-errors ul li {font-weight:normal} .validation-summary-errors ul li label,.validation-summary-errors ul li span {display:inline!important;字体重量:正常}

答案 1 :(得分:0)

我有同样的问题。

将textboxfor和validationmessage分成两个不同的div。

问题是验证消息删除了父母,这就是为什么字段消失了。有两个简单的div validationmessagefor无法访问前一个div。

这将解决我希望的问题