C# 将输入设为可选的Web服务字段(非必需)
我创建了一个示例Web服务,它将要求用户提供一些信息,并以JSON形式返回所需的所有信息。我这里有两个问题C# 将输入设为可选的Web服务字段(非必需),c#,json,web-services,visual-studio-2010,C#,Json,Web Services,Visual Studio 2010,我创建了一个示例Web服务,它将要求用户提供一些信息,并以JSON形式返回所需的所有信息。我这里有两个问题 我不想要求用户输入新的日期和续约日期,我只想让其中一个是必需的,而另一个是可选的 如果输入了两个日期,new和renewal,那么用户将在一个JSON中获得所有信息,但我不确定如何将这两个列表附加在一起 如果您需要其他信息,请告诉我,这是我的Web服务代码 namespace WebServiceTest { /// <summary>
namespace WebServiceTest
{
/// <summary>
/// Summary description for WebServicePrueba
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
// [System.Web.Script.Services.ScriptService]
public class WebServicePrueba : System.Web.Services.WebService
{
private string User { get; set; }
private string UserID { get; set; }
private DateTime NewServiceDate { get; set; }
private DateTime NewServicesTo { get; set; }
private DateTime RenewServiceDate { get; set; }
private DateTime RenewServiceTo { get; set; }
[System.Web.Services.WebMethod(Description = "Get Services Received", EnableSession = true)]
public string getSeviceInformation(string name, string userId, DateTime newServiceDate, DateTime newServicesTo, DateTime renewServiceDate, DateTime renewServiceTo)
{
User = name;
UserID = userId;
NewServiceDate = newServiceDate;
NewServicesTo = newServicesTo;
RenewServiceDate = renewServiceDate;
RenewServiceTo = renewServiceTo;
if (User == "prueba" && UserID == "prueba")
{
if (renewServiceDate == DateTime.MinValue || renewServiceTo == DateTime.MinValue)
{
ArrayList list = this.participant.getAddedTRCTest(newServiceDate, newServicesTo);
return JsonConvert.SerializeObject(list);
}
else if (newServiceDate == DateTime.MinValue || newServicesTo == DateTime.MinValue)
{
ArrayList list = this.participant.getModifiedTRCTest(renewServiceDate, renewServiceTo);
return JsonConvert.SerializeObject(list);
}
else
{
ArrayList list = this.participant.getAddedTRCTest(newServiceDate, newServicesTo);
ArrayList list2 = this.participant.getModifiedTRCTest(renewServiceDate, renewServiceTo);
return JsonConvert.SerializeObject(list);
}
}
else if (User != "prueba" && UserID == "prueba")
{
return "Please check your username";
}
else if (User == "prueba" && UserID != "prueba")
{
return "Please check your UserID";
}
else
{
return "Please check both your username and userID";
}
}
}
}
------------------------------------更新----------------------
@刘建平当我在函数中声明可为空的参数时,我无法再测试webservice,我得到
`试验
测试表单仅适用于以基元类型作为参数的方法`
我是这样宣布的
[System.Web.Services.WebMethod(Description = "Get Services Received", EnableSession = true)]
public string getSeviceInformation(string name, string userId, DateTime? newServiceDate, DateTime? newServicesTo, DateTime? renewServiceDate, DateTime? renewServiceTo)
您可以为4 DateTime使用可为null的变量
private DateTime? NewServiceDate { get; set; }
private DateTime? NewServicesTo { get; set; }
private DateTime? RenewServiceDate { get; set; }
private DateTime? RenewServiceTo { get; set; }
并使用NewServiceDate.HasValue检查它是否包含值
如果(newServiceDate.HasValue)。。。。在这里做点什么我做了更改,但仍然得到相同的错误。需要如何输入DateTime的输入。我尝试了
10/17/2013
到10/17/2013
和2013-10-17
到2013-10-18
。我还需要做其他的修改吗?因为当我运行服务而不必输入续费日期,并且我使用2013-10-17
到2013-10-18
时,服务将运行。@Tavo您的函数中还需要可为空的参数。公共字符串getSeviceInformation(字符串名称、字符串用户ID、DateTime?newServiceDate、DateTime?NewServiceTo、DateTime?RenewalServiceDate、DateTime?RenewalServiceTo)和您的DateTime格式需要与服务器机器的DateTime格式相同。否则,可以将字符串传递给函数,然后在函数中将字符串转换为datatime
private DateTime? NewServiceDate { get; set; }
private DateTime? NewServicesTo { get; set; }
private DateTime? RenewServiceDate { get; set; }
private DateTime? RenewServiceTo { get; set; }