jqGrid& MVC3 - 添加模型验证

时间:2011-11-12 14:19:31

标签: asp.net-mvc validation jqgrid

是否可以将模型验证添加到编辑或添加jqgrid表单?如果是这样,它会怎么做?我知道我可以为jqGrid表单上的每个字段创建自定义验证,但是如何将默认的MVC3验证集成到jqGrid?

我一直在创建一个自定义按钮,在jQuery对话框上加载局部视图。但是,我不想再次调用控制器,因为我可以通过jqGrid get方法直接获取所有行值(即使我丢失了部分视图模型验证)。

任何提示?

2 个答案:

答案 0 :(得分:0)

虽然我对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>

答案 1 :(得分:0)

示例:

 $(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}(因此,如果此字段为空,则表示正常,但如果包含无效的电子邮件检查失败)。

jqGrid Wiki

中的更多信息和示例

如果您想在不修改JS代码的情况下进行此检查,您可以使用Trirand中的控件,这允许您在服务器端执行此操作