使用WCF和JSONP插入剑道网格记录
我有一个WCF服务,我在jsonp上配置它 我的模特是MoviesItem使用WCF和JSONP插入剑道网格记录,wcf,jsonp,kendo-ui,Wcf,Jsonp,Kendo Ui,我有一个WCF服务,我在jsonp上配置它 我的模特是MoviesItem [DataContract] public class MoviesItem { [DataMember] public int MovieID { get; set; } [DataMember] public string MovieTitle { get; set; } [DataMember] public DateTime MovieReleseDate { ge
[DataContract]
public class MoviesItem
{
[DataMember]
public int MovieID { get; set; }
[DataMember]
public string MovieTitle { get; set; }
[DataMember]
public DateTime MovieReleseDate { get; set; }
}
我的服务合同是IMOVEISERVICE
[ServiceContract]
public interface IMoviesService
{
[WebGet( BodyStyle = WebMessageBodyStyle.Bare ,RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
[OperationContract]
IEnumerable<MoviesItem> GetMovies();
[WebInvoke(Method = "POST",BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
[OperationContract]
void AddMovies(MoviesItem movies);
}
[WebGet(ResponseFormat = WebMessageFormat.Json)]
[OperationContract]
void AddMovies(string jsonData);
我的剑道网格已从WCF以jsonp格式返回的数据中成功绑定,但当我单击“尝试使用剑道网格在数据库中插入记录”时,我始终会收到以下错误:
"NetworkError: 400 Bad Request - http://localhost:2382/KendoUiTest/MoviesService.svc/AddMovies?callback=jQuery17102623996303075524_1334611809600"
请有人帮我解决这个问题,我如何插入记录使用WCF。我在哪里做错了,我无法理解。我已经发布了我找到的解决方案 JSONP不接受POST请求,这是主要问题 解决方法是像这样修改create函数和parametermap函数
var dataSource1 = new kendo.data.DataSource(
{
transport:
{
read:
{
url: "MoviesService.svc/GetMovies",
dataType: "jsonp",
},
create:
{
url: "MoviesService.svc/AddMovies",
dataType: "jsonp",
},
parameterMap: function (data, operation) {
if (operation != "read") {
return { jsonData: kendo.stringify(data.models) };
}
}
},
}, and so on ............
现在合同和服务功能都发生了这样的变化
var dataSource1 = new kendo.data.DataSource(
{
transport:
{
read:
{
url: "MoviesService.svc/GetMovies",
dataType: "jsonp",
},
create:
{
url: "MoviesService.svc/AddMovies",
dataType: "jsonp",
},
parameterMap: function (data, operation) {
if (operation != "read") {
return { jsonData: kendo.stringify(data.models) };
}
}
},
}, and so on ............
伊莫维耶斯酒店
[ServiceContract]
public interface IMoviesService
{
[WebGet( BodyStyle = WebMessageBodyStyle.Bare ,RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
[OperationContract]
IEnumerable<MoviesItem> GetMovies();
[WebInvoke(Method = "POST",BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
[OperationContract]
void AddMovies(MoviesItem movies);
}
[WebGet(ResponseFormat = WebMessageFormat.Json)]
[OperationContract]
void AddMovies(string jsonData);
现在MoviesService类将具有上述函数实现
public IEnumerable<MoviesItem> AddMovies(string jsonData)
{
using (var context = new MovieCollectionDataContext())
{
var movies = JArray.Parse(jsonData);
foreach (var item in movies)
{
var movie = new Movie()
{
Title = item["MovieTitle"].ToString(),
ReleaseDate = DateTime.Parse(item["MovieReleseDate"].ToString())
};
context.Movies.InsertOnSubmit(movie);
context.SubmitChanges();
}
return context.Movies.Select(e => new MoviesItem()
{
MovieID = e.ID,
MovieTitle = e.Title,
MovieReleseDate = e.ReleaseDate
}).Take(50).ToList();
}
}
public IEnumerable AddMovies(字符串jsonData)
{
使用(var context=new MovieCollectionDataContext())
{
var movies=JArray.Parse(jsonData);
foreach(电影中的var项)
{
var movie=新电影()
{
Title=项目[“MovieTitle”]。ToString(),
ReleaseDate=DateTime.Parse(项[“MoviereleState”].ToString())
};
context.Movies.InsertOnSubmit(电影);
context.SubmitChanges();
}
返回context.Movies.Select(e=>newMoviesItem()
{
电影ID=e.ID,
电影标题,
moviereleastate=e.ReleaseDate
}).取(50.ToList();
}
}
现在与JSONP和剑道一起享受WCF。。。。。。。。这太棒了我已经发布了我的解决方案 JSONP不接受POST请求,这是主要问题 解决方法是像这样修改create函数和parametermap函数
var dataSource1 = new kendo.data.DataSource(
{
transport:
{
read:
{
url: "MoviesService.svc/GetMovies",
dataType: "jsonp",
},
create:
{
url: "MoviesService.svc/AddMovies",
dataType: "jsonp",
},
parameterMap: function (data, operation) {
if (operation != "read") {
return { jsonData: kendo.stringify(data.models) };
}
}
},
}, and so on ............
现在合同和服务功能都发生了这样的变化
var dataSource1 = new kendo.data.DataSource(
{
transport:
{
read:
{
url: "MoviesService.svc/GetMovies",
dataType: "jsonp",
},
create:
{
url: "MoviesService.svc/AddMovies",
dataType: "jsonp",
},
parameterMap: function (data, operation) {
if (operation != "read") {
return { jsonData: kendo.stringify(data.models) };
}
}
},
}, and so on ............
伊莫维耶斯酒店
[ServiceContract]
public interface IMoviesService
{
[WebGet( BodyStyle = WebMessageBodyStyle.Bare ,RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
[OperationContract]
IEnumerable<MoviesItem> GetMovies();
[WebInvoke(Method = "POST",BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
[OperationContract]
void AddMovies(MoviesItem movies);
}
[WebGet(ResponseFormat = WebMessageFormat.Json)]
[OperationContract]
void AddMovies(string jsonData);
现在MoviesService类将具有上述函数实现
public IEnumerable<MoviesItem> AddMovies(string jsonData)
{
using (var context = new MovieCollectionDataContext())
{
var movies = JArray.Parse(jsonData);
foreach (var item in movies)
{
var movie = new Movie()
{
Title = item["MovieTitle"].ToString(),
ReleaseDate = DateTime.Parse(item["MovieReleseDate"].ToString())
};
context.Movies.InsertOnSubmit(movie);
context.SubmitChanges();
}
return context.Movies.Select(e => new MoviesItem()
{
MovieID = e.ID,
MovieTitle = e.Title,
MovieReleseDate = e.ReleaseDate
}).Take(50).ToList();
}
}
public IEnumerable AddMovies(字符串jsonData)
{
使用(var context=new MovieCollectionDataContext())
{
var movies=JArray.Parse(jsonData);
foreach(电影中的var项)
{
var movie=新电影()
{
Title=项目[“MovieTitle”]。ToString(),
ReleaseDate=DateTime.Parse(项[“MoviereleState”].ToString())
};
context.Movies.InsertOnSubmit(电影);
context.SubmitChanges();
}
返回context.Movies.Select(e=>newMoviesItem()
{
电影ID=e.ID,
电影标题,
moviereleastate=e.ReleaseDate
}).取(50.ToList();
}
}
现在与JSONP和剑道一起享受WCF。。。。。。。。太棒了