2011-11-12 16 views
7

モデルバリデーションを編集または追加することは可能ですか?もしそうなら、どうやってやるの?私はjqGridフォームの各フィールドのカスタム検証を作成することができますが、どのようにjqGridにデフォルトのMVC3検証を統合することができますか?jqGrid&MVC3 - モデルバリデーションの追加

私は、jQueryダイアログに部分的なビューを読み込むカスタムボタンを作成しています。しかし、jqGrid getメソッドを使用して、(たとえ私が部分ビューモデルの検証を失うにしても)すべての行値を直接取得できることを考慮して、コントローラーをもう一度呼び出すことはしません。

ヒント

+0

でそれを行う可能にする、Trirandからコントロールを使用することができます興味深い。答えやそれに類する質問がありますか? THX! – Larry

+1

@Larry、Nope。これまで私はどんな答えや似たような質問も見ていませんでした。ただし、部分的なビューを使用してjqueryダイアログにロードするのはかなり簡単です。本当にデフォルトのダイアログを使いたいのであれば、comercial 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}である(そう、このフィールドが空の場合、それは大丈夫ですが、もしそれは無効な電子メールのチェックに失敗しています)。私はこの質問が有用であることが分かっ

jqGrid Wiki

でinformationaと例より、あなたのJSコードを変更せずに、このチェックを行いたい場合は、サーバー・サイド

関連する問題