2017-09-17 1 views
1

J'ai des formulaires Web ASP.NET existant application qui a un service Web pour récupérer des données en JSON. Les données envoyées à ce service Web sont également envoyées en tant que json. Le service web est vraiment une page ASPX qui reçoit des données sous forme de données de formulaire affiché:Kendo UI Grille avec serveur Web personnalisée JSON - "Uncaught TypeError: this.replace est pas une fonction"

json = Server.UrlDecode(Request.Form.ToString()) 

Dans le Kendo-UI je passe les paramètres comme suit:

transport: { 
    read: { 
     url: "MyService.aspx", 
     dataType: "json", 
     type: "POST", 
     data: JSON.stringify(GetRequestParams()) 
    } 
} 

la valeur de JSON.stringify (GetRequestParams()) est

"{"Header":{"Method":"getfiles"},"Body":{"Data":{},"MaxResults":10,"PageNum":"1","FolderID":"14","SearchString":"","SearchSubFolders":false,"DepartmentID":"333333"},"ApiBaseUrl":"/Api3/"}" 

Cependant, cela donne l'erreur javascript suivant: "Uncaught TypeError: this.replace est pas une fonction" Si je passe les données sans stringifying i t d'abord, il n'y aura pas une erreur javascript, mais sur le côté serveur, au lieu du JSON, je reçois:

$inlinecount=allpages&Header[Method]=getfiles&Body[MaxResults]=10&Body[PageNum]=1&Body[FolderID]=14&Body[SearchString]=&Body[SearchSubFolders]=false&Body[DepartmentID]=333333&ApiBaseUrl=/Api3/&GetAjaxData=&$top=20 

Quelqu'un at-il une idée comment je peux passer un objet de données personnalisé à l'aide du transport. Lire l'option avec Kendo-UI afin que je puisse décoder l'objet de données sur le côté serveur sans problèmes?

Alternativement toute suggestion façon d'accomplir cette tâche avec des formes de asp.net de toute autre manière?

+0

Avez-vous déjà figure quelque chose? J'ai le même problème avec un projet MVC –

Répondre

0

J'ai trouvé un travail autour, mais pas à 100% ce qu'il était, depuis que je l'ai fait sans Kendo à la fin. Ce que je peux voir de mon code que je l'ai été:

pour transmettre les données: data: GetRequestParams() (sans stringify)

Dans le code derrière je déterminer si cela venait de Kendo par cette (VB.Net):

If (Request.Form("Header[Method]") IsNot Nothing AndAlso Request.Form("Header[Method]").ToLower() = "getfiles") Then 
     KendoRequest = True 
Else 

Et que d'obtenir les paramètres comme ceci:

If Request.Form("Body[PageNum]") IsNot Nothing Then 
    PageNum = Convert.ToInt32(Request.Form("Body[PageNum]")) 
End If 

If Request.Form("Body[FolderID]") IsNot Nothing Then 
    FolderID = Convert.ToInt32(Request.Form("Body[FolderID]")) 
End If 

Pas assez, mais cela a fonctionné.