2013-11-09 37 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