2013-11-09 6 views
0

Это мой первый раз, когда я использую службу WCF с нокаутом. Я хочу, чтобы POST всей модели представления рассматривался как объект JSON с вызовом ajax.Webinvoke для POST JSON с вызовом ajax

Это сообщение об ошибке, что я получаю:

Endpoints используя 'UriTemplate' не может быть использован с 'System.ServiceModel.Description.WebScriptEnablingBehavior'

Я заметил, что некоторые разработчики отправьте каждое значение в качестве параметра, который, как мне кажется, не нужен, особенно если вы работаете с большим объектом.

Это мой метод 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; 
    } 

Это моя функция Аякса

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

Смежные вопросы