2017-05-09 5 views
0

MVCビューからコントローラに値をポストしようとしています。 要求検証機能がアプリケーションで有効になっています。Json.stringifyはHTML要素を許可します

しかし、私はHTMLタグで値をコントローラに渡そうとしたときに、例外が発生していません。

 Group.Name = model.Name(); 
     Group.Id = model.ID(); 

     $.ajax({ 
      type: 'POST', 
      url: /IndexController/SaveGroup', 
      async: true, 
      cache: false, 
      dataType: "json", 
      contentType: 'application/json; charset=utf-8', 
      data: JSON.stringify({ Group: group }), 

      success: function (data /*, textStatus, request*/) { 
       try { 

       } 
       catch (error) { 
        showExceptionWindow('Jquery Error:' + error); 

       } 
      }, 
      error: function (request /*, status, error*/) { 
       handleException(request.responseText); 
      } 
     }); 
    } 

コントローラコード:

は、ここに私のAjaxのポストで、値はコントローラのアクションメソッドに渡していると救わ私はhtmlタグを挿入しようとした

[HttpPost] 
     public async Task<ActionResult> SaveGroup(Group group) 
     { 

リクエストの検証機能が有効になっている場合、html要素をコントローラに渡すべきではありません。

コントローラでブロックされていることを確認する方法。

data: JSON.stringify({ group: Group }), // <-----It should have to be this Group here 

そして、あなたのバックエンドで:

[HttpPost] 
    public async Task<ActionResult> SaveGroup(Group group) // group is {} 
    { 

それともGroupとして

答えて

0

は、あなたがgroupは、それが定義されていない有効なオブジェクトがあるように思われないよう、タイプミスを持っているようですすでにオブジェクトの場合は、直接文字列にすることができます。

data: JSON.stringify(Group), // <-----It should have to be this Group here 

[HttpPost] 
    public async Task<ActionResult> SaveGroup(Group Group) // group is {} 
    { 
デフォルトのMVCはValidate.jsはちょうど私を通過するプラグインのjQueryを使用しないようにする、送信ボタンを変更しましたので、
+0

おかげできれいなJSの解決策になることができます。 –

0

MVCの検証は、検出するために、HTMLパーサーを使用していないのはなぜ、このコードは

var form = $("#YourFormID"); 
     form.validate(); 
     form.submit(function (e) { 
      e.preventDefault(); 
      if (form.valid()) { 

       //Your ajax call 

       } 
     }) 
+0

でも、私はボタンタイプを「送信」に変更しようとしましたが、まだ有効性は確認されていません。 –

+0

あなたのビューのサイドコードをアップロードしてください –

0

を動作するはずの仕事をdosent HTML要素の注入?これは、要求の検証機能が有効になっているようMVCの検証がHTML要素を起こっと許可されていない理由reply.But私の懸念のための

var containsHTML = /<[a-z][\s\S]*>/i.test("<p>HTML text to be parsed</p>") 
if(containsHTML==true){ 
    //There are HTML tags inside the string 
} 
else{ 
    //You're good to go 
} 
関連する問題