mvc: контроль требуемой проверки - PullRequest
0 голосов
/ 11 марта 2011

Я использую MVC 2.0 с C # .Net На странице просмотра я создаю несколько элементов управления с обязательными проверками полей. чтобы построить свои элементы управления, я использую цикл for для моего объекта mode, который на самом деле является коллекцией бизнес-объекта. Для моего элемента управления TextBox, который представляет «комментарии пользователей», я поставил валидацию под него. как

<%:Html.TextBoxFor(model=>model.mycollection[i].Comment %>
<%:Html.ValidationMessageFor(model => model.mycollection[i].comments) %>

Для каждой строки (для каждого текстового поля комментария) есть кнопка sumit, как показано ниже

<input runat="Server" name="Button" id="Submit1" type="submit" class="button" value="save comments">

Когда форма загружается, создаются 3 строки, каждая из которых содержит набор текстового поля и кнопку для отправки. Это потому, что модель представляет собой набор из 3 объектов. Так что теперь я могу отправлять каждый комментарий, введенный пользователем индивидуально Но проблема в том, что, когда я нажимаю на любую кнопку, вместо проверки соответствующего текстового поля для требуемой проверки, он проверяет все текстовые поля на странице одновременно и выдает сообщение об ошибке для всех них. Как избежать такого поведения? На моей странице сверху есть метод html.beginform, чтобы поместить все в одну форму и опубликовать отправку для действия контроллера.

1 Ответ

0 голосов
/ 12 марта 2011

Можете ли вы попытаться поместить каждый объект из вашей коллекции в отдельную форму, например, такую:

<table>
     <% foreach(person in Model.Personlist)  { %>       
   <tr>       
 <td>
  <form>
   <%=Html.TextAreaFor(...) %> 
   <%=Html.ValidationMessageFor(...)  %>
   <input type="button"......></input>
  </form>
  </td>   
  </tr>  
   <% } %> 
 </table>

.., поэтому только эта форма будет проверена, когда вы нажмете кнопку Отправить.Также вы можете использовать div вместо таблицы.

...