我有第三方api,它要求将字符串值作为空字符串提交。 在asp.net页面上,我可以使用此代码(在此缩写),它可以正常工作:
public class Customer
{
private string addr1 = "";
public string Addr1
{
get {return addr1;}
set {addr1 = value;}
}
private string addr2 = "";
public string Addr2
{
get {return addr2;}
set {addr2 = value;}
}
private string city = "";
public string City
{
get {return city;}
set {city = value;}
}
}
Customer cust = new Customer();
cust.Addr1 = "1 Main St.";
cust.City = "Hartford";
int custno = CustomerController.InsertCustomer(cust);
未插入的Addr2字段在插入时仍为空字符串。
但是,使用相同的代码但通过基于Windows Communication Foundation的Web服务调用它,Addr2字段为空。有没有一种方法(或设置),即使未初始化,所有字符串字段都将返回一个空字符串(当然,除非设置了一个值)。
答案 0 :(得分:0)
我找不到如何将空值序列化为空字符串,所以我更改了Customer类,如下所示:
public class Customer
{
private string addr1 = "";
public string Addr1
{
get {return addr1;}
set {addr1 = value ?? string.Empty; }
}
private string addr2 = "";
public string Addr2
{
get {return addr2;}
set {addr2 = value ?? string.Empty; }
}
private string city = "";
public string City
{
get {return city;}
set {city = value ?? string.Empty; }
}
这可以保证所有字符串属性都设置为string.Empty,并且它可以解决问题。 (如果有人知道不同的解决方案,我很乐意听到。)
答案 1 :(得分:0)
您是否在客户端和服务器端都有客户类的dll参考?
我认为正在发生的是,当您创建客户端时,您已经完成了添加服务引用。这产生了一个客户端类。
然后在客户端执行一个不包含
类型行的新对象private string addr1 = "";
然后在客户端设置为null,并在服务器端反序列化为null。
如果您可以控制客户端和服务器端,则可以使用两者中的对象引用来引用dll。