2012-10-30 40 views
2

大家好我是的WebAPI的工作,現在在這裏,我需要更新我有表數據的權利(entitymodel)如何使用jquery在webapi中更新?

  id | value 
      1 | previous data 
      2 | new data 

現在我需要更新表意味着IAM更新CKEditor的數據的IAM一些文本CKEditor的,一旦mouseleves的CKEditor的DIV我需要的數據保存到數據庫,所以當IAM立刻着手控制器我有控制器空單Ajax調用可以üPLZ一切FING幫我

這裏我AjaxCall的:

<script type="text/javascript"> 
$(document).ready(function() { 
var editor = CKEDITOR.editor.replace('editor1'); 
$('#btndiv').mouseleave(function (event) { 
    $('#btndiv1').hide("slow"); 
     alert(1); 
     var value = editor.getData(); 
     $('#btndiv').append(value); 
    // send your ajax request with value 

     var dataToPost = JSON.stringify(value); 
     alert('hi'); 
     alert(dataToPost+"got data"); 
     $.ajax({ 
      type: "Put", 
      url: "/api/UpdateCkeditor", 
      contentType: "application/json; charset=utf-8", 
      data: dataToPost, 
      dataType: "json", 
      success: function() { 
       // do what you want on success. 


      } 
     }); 
    }); 
}); 
</script> 

^h ERE IAM具有數據(值)的OD,當它移動到控制器它示出了空

這裏我的控制器:

 public void Put(ckeditormodels value) 
    { 
     webapiEntities db = new webapiEntities(); 

     var empObj = db.ckeditorDatas.First(c => c.value ==value.value); 
     empObj.value = value.value; 

     db.SaveChanges(); 

    } 

這裏我的模型:

 public class ckeditormodels 
{ 
    public int id { get; set; } 
    public string value { get; set; } 
} 

甚至它表示誤差和controolers表示喜歡的對象引用本身不會對實例的對象一些錯誤plz幫助我提前

回答

2

你沒有得到模型,因爲你S中的方式結合做好這項工作的感謝構建您的.ajax()電話的data屬性。從本質上講,你現在發佈的只是一堆純文本,而不是JSON對象。

試試這個:

var id = getId(); // Implement this to actually get your ID. 

$.ajax({ 
    type: "Put", 
    url: "/api/UpdateCkeditor", 
    contentType: "application/json; charset=utf-8", 
    data: { 'id': id, 'value': dataToPost }, 
    dataType: "json", 
    success: function() { 
     // do what you want on success. 
    } 
}); 

注意形成data財產的方式 - 它是一個對象,它正是你想要綁定到服務器端模型的簽名相匹配。

我也建議在您的服務器端方法的簽名,您將其更改爲:

public void Put([FromUri]int id, [FromBody]ckeditormodels value) { 
    value.id = id; 
    webapiEntities db = new webapiEntities(); 

    var empObj = db.ckeditorDatas.First(c => c.value == value.value); 
    empObj.value = value.value; 

    db.SaveChanges(); 
} 

的原因是,你正在改變現有對象 - 從一個RESTful角度來看,這爲更好地指示哪些獨特的服務器端資源(記錄ID)正在更新URL來完成。這只是一種方法論/風格的東西,但它不會對你的數據綁定有任何真正的影響。

+1

+1對於FromUri和FromBody。 –