2010-07-09 3 views
0

У меня есть приложение MVC с частичным представлением (см. Ниже). Когда я добавляю Html.EnableClientValidation(), мои поля исчезают после их выхода. Я не ожидаю, что кто-нибудь сможет понять это из кода, но если кто-то видел такое поведение и может указать мне в правильном направлении, я был бы признателен. Между тем, я начну перестраивать по частям и посмотреть, что я могу видеть и буду отчитываться.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") %> 
+0

Примечания: Это происходит, использую ли я Html.BeginForm() или Ajax.BeginForm() – sydneyos

ответ

0

Фигурные это - именно это CSS от предыдущего заигрывания с this code:

/------ -------------------------------------------------- - ASP.NET MVC FRAMEWORK DEFAULT НАЗВАНИЯ КЛАССА CSS ------------------------------------- ---------- -----------/ .error, .field-validation-error {color: red}

.input-validation-valid, .field-validation-valid, .validation-summary -valid {display: none} . input-validation-error {background-color: #fee; border: 1px solid red; outline: none} . input-validation-error: focus {outline: none} ввод [тип = "текст"]. ввод-проверка-ошибка: фокус, select.input-validation-error: focus {outline: none}

.validation-суммарных-ошибок {цвет: красный} .validation-суммарные-ошибки Span {шрифта вес: 700} .validation-суммарные-ошибки уль {список-стиль: диск внутри} .validation- сводные ошибки ul li {font-weight: normal} .validation-summary-errors ul li label, .validation-summary-errors ul li span {display: inline! important; font-weight: normal}

0

У меня была та же проблема.

Просто отделите текстовое поле forfor и validationmessagefor от двух разных div.

Проблема в том, что validationmessage для удаления родителя, поэтому поле исчезает. с двумя простыми аргументами валидации div для доступа к предыдущему div.

Это позволит устранить эту проблему, я надеюсь,