jqGrid & MVC3 - Добавление проверки модели - PullRequest
7 голосов
/ 12 ноября 2011

Можно ли добавить проверку модели в форму редактирования или добавить форму jqgrid? Если так, как это будет сделано? Я знаю, что могу создать пользовательскую проверку для каждого поля в форме jqGrid, но как интегрировать проверку MVC3 по умолчанию в jqGrid?

Я делал это, создавая пользовательскую кнопку, которая загружает частичное представление в диалоге jQuery. Однако я не хотел бы делать еще один вызов контроллера, учитывая, что я могу получить все значения строк напрямую (даже если бы я утратил проверки модели частичного представления) через jqGrid get Methods.

Любые намеки?

Ответы [ 2 ]

0 голосов
/ 19 ноября 2014

Пример:

 $(document).ready(function () {
    $("#jqg").jqGrid({
      url: '@Url.Action("GetData")',
        datatype: "json",
        colNames: ['User name', 'Email'],
        colModel: [
        { name: 'UserName', index: 'UserName', width: 150, sortable: true, editable: true },
        { name: 'Email', index: 'Email', width: 150, sortable: true, editable: true, editrules:{email:true, required:false}}
        ],
        caption: "User List"
    });

Проверка здесь editrules:{email:true, required:false} (поэтому, если это поле пустое, все в порядке, но если оно содержит недопустимый адрес электронной почты, проверка не выполняется).

Дополнительная информацияa ипримеры в jqGrid Wiki

И если вы хотите сделать эту проверку без изменения вашего кода JS, вы можете использовать элементы управления из Trirand , которые позволяют вам делать это на стороне сервера

0 голосов
/ 23 июня 2014

Хотя я не знаком с jqGrid, я обычно делал то же самое, что и вы, в отношении заполнения диалогов jQuery из действия контроллера, которое отображает частичное представление.

Вместо выполнения обратного вызова вы можете загрузить частичное представление при отображении представления jqGrid.Затем просто заполните поля из выбранной строки.Вот пример кода для рассмотрения, хотя и не проверенный.

Ваше представление сетки:

@model List<Customer>

<!-- create jqGrid here -->

@Html.PartialView("CustomerForm",new Customer());

CustomerForm:

@model Customer

<div id="CustomerForm">
@using (Html.BeginForm("Save","Customer",...) )
{
   @Html.HiddenFor(m => m.CustomerId)
   <div class="control-group">
      @Html.LabelFor(m => m.CustomerName)
      <div class="controls">
          @Html.EditorFor(m => m.CustomerName)
          @Html.ValidationFor(m => m.CustomerName)
      </div>
  </div>
  <p><input type="submit" id="submit" value="Save" /></p>
}
</div>

<script type="text/javascript">
   var $cf = $('#CustomerForm');
   $cf.dialog({ autoOpen: false }); // see jquery ui docs for exact options


   $('#myGrid .edit, #myGrid .add').click(function() {
       $(this).closest('tr').find('input, select').each(function() {
           $('input[name='+this.name+'], select[name='+this.name+']',$cf).val($(this).val());
       });
       $cf.dialog('open');
   });
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...