2017-05-09 97 views
0

我想從MVC視圖發佈值到控制器。 爲應用程序啓用了請求驗證功能。Json.stringify允許HTML元素

但是,當我試圖將值與HTML標籤傳遞給控制器​​,我沒有得到任何異常。

這裏是我的ajax開機自檢:

 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); 
      } 
     }); 
    } 

控制器代碼:

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

當我試圖插入HTML標籤,該值傳遞給控制器​​的操作方法,並得到保存。

啓用請求驗證功能時,不應將html元素傳遞給控制器​​。

如何確保它在控制器處被阻塞。

回答

0

看來你有一個錯字,因爲group似乎並沒有被它是未定義有效的對象:

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

而在後端:

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

或者像Group是已經是一個對象,那麼你可以直接將其串聯起來:

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

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

感謝您的答覆。但我擔心MVC驗證沒有發生,並允許HTML元素作爲請求驗證功能啓用。 –

0

MVC驗證dosent工作,因爲你已經修改了提交按鈕,以防止默認的MVC使用jQuery插件Validate.js剛剛經過我,這個代碼應該爲什麼不使用HTML解析器來檢測工作

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

       //Your ajax call 

       } 
     }) 
+0

即使我試圖改變按鈕類型爲「提交」,但仍然沒有發生驗證 –

+0

請上傳您的觀點端代碼 –

0

HTML元素注入?這可以是一個乾淨的JS解決方案

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 
}