2013-11-09 38 views
0

這是我第一次使用WCF服務和Knockout。我想通過ajax調用將整個視圖模型作爲JSON對象進行發佈。通過ajax調用Webinvoke到POST JSON

這是錯誤信息,我得到:使用不能與 「System.ServiceModel.Description.WebScriptEnablingBehavior」

我注意到,一些開發商用「UriTemplate」

端點發送每個值作爲參數,我認爲這是不必要的,特別是如果你使用大對象。

這是我的WCF方法:

[OperationContract] 
    [WebInvoke(UriTemplate = "AddNewEvent?newEvent", Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)] 
    public bool AddNewEvent(Models.DAL_CRMEvents newEvent) 
    { 
     Entities.CRMEntities dbCRM = new Entities.CRMEntities(); 
     //Models.CRMEvents crmEvent = new Models.CRMEvents(); 
     Entities.Event crmEvent = new Entities.Event(); 



     crmEvent.EventDateCreated = Convert.ToDateTime(newEvent.DateCreated); 
     crmEvent.EventActive = true; 
     crmEvent.EventDescription = newEvent.Description; 
     crmEvent.EventDate = Convert.ToDateTime(newEvent.Date); 
     crmEvent.EventTimeStart = TimeSpan.Parse(newEvent.TimeStart); 
     crmEvent.EventTimeEnd = TimeSpan.Parse(newEvent.TimeEnd); 
     crmEvent.EventAllDay = newEvent.AllDay; 

     dbCRM.AddToEvent(crmEvent); 

     return true; 
    } 

這是我的AJAX功能

function SaveEvent (data) { 
     var s = { 
      newEvent: ko.mapping.toJS(data) 
     } 


     alert(data.AllDay()); 
     $.ajax({ 
      type: "POST", 
      url: "../Services/CRMDataService.svc/AddNewEvent", 
      data: JSON.stringify(s), 
      contentType: "application/json; charset=utf-8", 
      dataType: "JSON", 
      success: function (result) { 
       alert(result); 
      }, 

      error: function (jqXHR, textStatus, errorThrown) { 
       if (textStatus == "error" && errorThrown != "") { 
        var n = noty({ 
         text: errorThrown, 
         type: 'warning', 
         dismissQueue: false, 
         modal: true, 
         layout: 'center', 
         theme: 'defaults', 
         callback: { 
         } 
        }) 
       } 
      } 
     }) 
    } 

回答

1

嘗試改變OperationContract看起來像這樣...

[OperationContract] 
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)] 
public bool AddNewEvent(Models.DAL_CRMEvents newEvent) 

有人做過posted here這解決了同樣的問題。還有一個post here可能有所幫助。

+1

非常感謝你解決了我的問題:-) – Gericke