2012-10-30 3 views
2

안녕 난 데이터 바로 내가 테이블을 데 (entitymodel를)jquery를 사용하여 webapi에서 업데이트하는 방법?

  id | value 
      1 | previous data 
      2 | new data 

지금 내가 테이블을 업데이트해야 업데이트해야 지금 여기에 내가 webapi 일하고 모두 스피 업데이트 ckeditor 데이터를 한 번 ckeditor에 텍스트를 IAM 및 의미 내가 DB에 데이터를 저장해야하므로 스피 컨트롤러로 이동받을 때 모든 것을 내가 빈 양식 아약스 호출이 유 수 plz 수있는 컨트롤러를 가지고 닐렌 된 ckeditor의 DIV를 mouseleves 도와

여기

내 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> 

시간 조립식 스피 가진 데이터 (값) OD는 컨트롤러로 이동할 때 비어 여기

내 컨트롤러 보여줍니다 보여주는

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

심지어 보여주는 오류 및 controolers에 : 여기

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

    } 

내 모델 객체 참조와 같은 오류가 인스턴스 plz 객체에 없습니다. 미리 감사 드리며이 작업을 도와주세요.

답변

2

나는 당신이 만든 방식 때문에 모델 바인딩을 얻지 못하고 있습니다. .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(); 
} 

이유는 기존 객체에 대한 변경을하는 것입니다 - 것을하고 편안한 관점에서 고유 한 서버 측 리소스 (레코드 ID)가 업데이트되고 있음을 나타내는 URL을 사용하는 것이 좋습니다. 이것은 방법론/문체에 불과합니다. 데이터 바인딩에 실질적인 영향을 미치지는 않습니다.

+1

+1 FromUri 및 FromBody의 경우. –

관련 문제