2011-08-26 37 views
1

省略一些列我有一个jqGrid的MVC中设置为:jqGrid的MVC从ModelState中

<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> 

在创建上提交进入到控制器上的保存方法。

正如你所见,CreatedByUsernameid被隐藏用于普通视图和编辑。

当我添加新的数据,虽然我发现ModelState.IsValid = false.

我已经成功地让这个CreatedByUsername不添加一个错误,即使没有数据通过editrules:{ required:false }添加它插入ModelState

问题是这段代码不能用于id,并且向ModelState的“The id field is required”添加了一个错误。

任何人都可以请告诉我如何防止id字段发生这种情况?

回答

0

问题是你的ID字段有关键属性,除了你的验证规则这个字段是必需的。解决方法是定义一个自定义函数进行验证并始终返回true

0

您可以将viewmodel中的id字段设置为空吗?像这样:

public int? Id {get;组; }

如果id不为空,mvc会自动创建一个验证错误。如果您不使用视图模型,但仅使用保存操作中的参数,则可以将id参数设置为可为空。