是否可以将模型验证添加到编辑或添加jqgrid表单?如果是这样,它会怎么做?我知道我可以为jqGrid表单上的每个字段创建自定义验证,但是如何将默认的MVC3验证集成到jqGrid?
我一直在创建一个自定义按钮,在jQuery对话框上加载局部视图。但是,我不想再次调用控制器,因为我可以通过jqGrid get方法直接获取所有行值(即使我丢失了部分视图模型验证)。
任何提示?
答案 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}
(因此,如果此字段为空,则表示正常,但如果包含无效的电子邮件检查失败)。
如果您想在不修改JS代码的情况下进行此检查,您可以使用Trirand中的控件,这允许您在服务器端执行此操作