2011-11-12 69 views
7

是否可以將模型驗證添加到編輯或添加jqgrid表單?如果是這樣,它將如何完成?我知道我可以爲jqGrid表單上的每個字段創建自定義驗證,但是如何將默認MVC3驗證集成到jqGrid?jqGrid&MVC3 - 添加模型驗證

我一直在創建一個自定義按鈕,在jQuery對話框中加載一個局部視圖。但是,我不希望再次調用控制器,因爲我可以通過jqGrid get Methods直接獲取所有行值(即使我失去了部分視圖模型驗證)。

任何提示?

+0

我發現這個問題有用和有趣的。是否存在答案或類似的問題?謝謝! – Larry

+1

@Larry,不要。直到現在我還沒有看到任何答案或類似的問題。但是,使用局部視圖並將其加載到jQuery對話框中很簡單。如果你真的想使用默認的對話框,你可以檢查商業jqGrid。它幾乎與asp.net mvc3完全集成。 – AdrianoRR

+0

THX阿德里亞諾!我已經在jQuery對話框上使用jqgrid了。現在我需要添加/編輯記錄,並且我有幾個驗證,包括一些字段上的自定義遠程驗證。你有其他建議/提示嗎?謝謝! – Larry

回答

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> 
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}(所以,如果該字段爲空,這是確定的,但如果它包含無效的電子郵件檢查失敗)。

更多資料a和例子jqGrid Wiki

如果你想要做這種檢查不修改您的JS代碼,你可以使用的控制從Trirand,它允許你做它的服務器端