WCF - 表单发布不与模型绑定
WCF - Form posting not binding with model
我有一个表单,我想使用 AJAX 和 WCF 提交,问题是我的模型 ("Client") 没有被填充。
当我提交表单时,它到达服务,但 "Client" 的所有字段都是空的。
我在这里错过了什么?
$("#myForm").on("submit", function (e) {
var Type = "POST";
var Url = "Service.svc/GetUser";
var Data = JSON.stringify($(this).serializeArray());
var ContentType = "application/json; charset=utf-8";
$.ajax({
type: Type, //GET or POST or PUT or DELETE verb
url: Url, // Location of the service
data: Data, //Data sent to server
contentType: ContentType, // content type sent to server
processdata: true,
success: function (result) {
$("#myForm").remove();
},
error: function (result) {
alert(result);
}
});
});
我服务:
[ServiceContract]
public interface IService
{
[OperationContract]
[WebInvoke(Method = "POST")]
void GetUser(Client client);
}
[DataContract]
public class Client
{
[DataMember(Name = "Name")]
public string Name { get; set; }
[DataMember(Name = "Phone")]
public string Phone { get; set; }
[DataMember(Name = "Email")]
public string Email { get; set; }
[DataMember(Name = "Message")]
public string Message { get; set; }
}
Service.cs:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Service : IService
{
public void GetUser(Client client) { }
}
已解决!
我发送了 JSON 数组而不是 JSON 对象!
我找到了一个非常好的工具,它采用输入形式并创建一个对象,它称为 jquery.serialize-object。您可以使用以下方式安装它:
bower 安装jQuery 序列化对象
希望对大家有所帮助。
你好尝试像这样发送值
var input = {"client": {
"Name": $("#Name").val(),
"Phone": $("#Phone").val(),
"Email": $("#Email").val(),
"Message": $("#Message").val()
}};
data: JSON.stringify(input),
通过您的代码数据不会发送到服务。
我有一个表单,我想使用 AJAX 和 WCF 提交,问题是我的模型 ("Client") 没有被填充。 当我提交表单时,它到达服务,但 "Client" 的所有字段都是空的。 我在这里错过了什么?
$("#myForm").on("submit", function (e) {
var Type = "POST";
var Url = "Service.svc/GetUser";
var Data = JSON.stringify($(this).serializeArray());
var ContentType = "application/json; charset=utf-8";
$.ajax({
type: Type, //GET or POST or PUT or DELETE verb
url: Url, // Location of the service
data: Data, //Data sent to server
contentType: ContentType, // content type sent to server
processdata: true,
success: function (result) {
$("#myForm").remove();
},
error: function (result) {
alert(result);
}
});
});
我服务:
[ServiceContract]
public interface IService
{
[OperationContract]
[WebInvoke(Method = "POST")]
void GetUser(Client client);
}
[DataContract]
public class Client
{
[DataMember(Name = "Name")]
public string Name { get; set; }
[DataMember(Name = "Phone")]
public string Phone { get; set; }
[DataMember(Name = "Email")]
public string Email { get; set; }
[DataMember(Name = "Message")]
public string Message { get; set; }
}
Service.cs:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Service : IService
{
public void GetUser(Client client) { }
}
已解决!
我发送了 JSON 数组而不是 JSON 对象! 我找到了一个非常好的工具,它采用输入形式并创建一个对象,它称为 jquery.serialize-object。您可以使用以下方式安装它: bower 安装jQuery 序列化对象
希望对大家有所帮助。
你好尝试像这样发送值
var input = {"client": {
"Name": $("#Name").val(),
"Phone": $("#Phone").val(),
"Email": $("#Email").val(),
"Message": $("#Message").val()
}};
data: JSON.stringify(input),
通过您的代码数据不会发送到服务。