jqgrid MVC опустить некоторые столбцы из ModelState - PullRequest
1 голос
/ 26 августа 2011

У меня есть jqGrid в настройке MVC как:

<script type="text/javascript">

    jQuery(document).ready(function () {
        jQuery("#list").jqGrid({
            url: '/Home/DynamicGridData/',
            datatype: 'json',
            mtype: 'POST',
            colNames: ['id', 'note', 'tax', 'PaymentType', 'CreatedByUsername', 'Actions'],
            colModel: [
                  { name: 'id', index: 'id', hidden: true, key: true, editable: true, editrules:{ required:false } },
                  { name: 'note', index: 'note', width: 40,align:'center', editable: true, editrules: { required : true } },
                  { name: 'tax', index: 'tax', width: 400, align: 'center', editable: true, editrules: { required : true } },
                  { name: 'PaymentTypeId', index: 'PaymentTypeId', width: 400, align: 'center', editable: true, edittype:"select", 
                    editoptions: { dataUrl: '/Home/PaymentTypes/' }},
                  { name: 'CreatedByUsername', index: 'CreatedByUsername', hidden: true, editable: true, editrules:{ required:false } },
                  { name: 'act',index:'act',width:55,align:'center',sortable:false,formatter:'actions',
                     formatoptions:{
                         keys: true, // we want use [Enter] key to save the row and [Esc] to cancel editing.
                         beforeSubmit:function(postdata, formid) {
                         alert("Hi");
                             jQuery("#ValidationSummary").show('slow');
                         },

                         },}
              ],
            pager: jQuery('#pager'),
            rowNum: 10,
            rowList: [5, 10, 20, 50],
            sortname: 'Id',
            sortorder: "desc",
            viewrecords: true,
            imgpath: '',
            caption: 'My first grid',
            editurl: '/Home/Save/'
        });
        jQuery("#list").navGrid('#pager', { edit: false, search: false, add: true });

    }); 
</script>

При создании при отправке он переходит к методу сохранения на контроллере.

Как видите, CreatedByUsername и id скрыты для обычного просмотра и редактирования.

Когда я добавляю новые данные, я нахожу, что ModelState.IsValid = false.

Мне удалось сделать так, чтобы CreatedByUsername не добавлял ошибку в ModelState, даже если для него не было добавлено никаких данных при вставке через editrules:{ required:false }.

Проблема в том, что этот же фрагмент кода не работает для id и добавляет ошибку в ModelState из «Поле id обязательное».

Может кто-нибудь сказать, как предотвратить это для поля id?

Ответы [ 2 ]

0 голосов
/ 26 августа 2011

Можете ли вы установить для поля идентификатора в вашей модели представления значение nullable?Как это:

public int?Id {get;задавать;}

Если идентификатор не обнуляем, mvc автоматически создаст ошибку проверки.Если вы не используете модель представления, а просто используете параметры для действия сохранения, вы можете установить для параметра id значение nullable.

0 голосов
/ 26 августа 2011

Проблема в том, что в вашем поле id есть ключевой атрибут, и кроме вашего правила проверки это поле обязательно для заполнения. Обходной путь должен определить пользовательскую функцию для проверки всегда возвращают true

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...