Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ServiceStack.Net中的多个可选参数_C#_Asp.net_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack - Fatal编程技术网 servicestack,C#,Asp.net,servicestack" /> servicestack,C#,Asp.net,servicestack" />

C# ServiceStack.Net中的多个可选参数

C# ServiceStack.Net中的多个可选参数,c#,asp.net,servicestack,C#,Asp.net,servicestack,我正在尝试使用ServiceStack.Net实现具有多个可选参数的服务 目前我的路线是这样的 Routes.Add<SaveWeek>("/save/{Year}/{Week}"); Routes.Add(“/save/{Year}/{Week}”); 我希望像这样支持URI: /保存/2010/12/Monday/4/周二/6/周三/7 即星期一=4,星期二=6,星期三=7 但是,我希望能够忽略天数,即调用服务的人员可以决定是否要保存每天的每个值 i、 e.像这样缺少参数值

我正在尝试使用ServiceStack.Net实现具有多个可选参数的服务

目前我的路线是这样的

Routes.Add<SaveWeek>("/save/{Year}/{Week}");
Routes.Add(“/save/{Year}/{Week}”);
我希望像这样支持URI:

/保存/2010/12/Monday/4/周二/6/周三/7

即星期一=4,星期二=6,星期三=7

但是,我希望能够忽略天数,即调用服务的人员可以决定是否要保存每天的每个值

i、 e.像这样缺少参数值

星期一=4,星期三=7,星期五=6

当然,一个解决方案是使用下面的路由,在我不想保存值时只传递0

Routes.Add<SaveWeek>("/save/{Year}/{Week}/{Monday}/{Tuesday}}/{Weds}/{Thurs}/{Fri}/{Sat}/{Sun}");
Routes.Add(“/save/{Year}/{Week}/{sunday}/{Weds}/{Thurs}/{Fri}/{Sat}/{Sun}”);

但是。。。。。有没有更好的方法来实现此功能?

当您的路由要求开始变得过于复杂时,只需添加通配符路径,您就可以自己解析查询字符串的其余部分,这最终会变得更加容易。i、 e.在这种情况下,由于查询字符串的第一部分保持不变,因此可以添加通配符映射来存储查询字符串的可变部分,即:

Routes.Add("/save/{Year}/{Week}/{DaysString*}");
ServiceStack仍将使用字段(以及查询字符串中传递的任何字段)填充部分DTO。url的其余可变部分存储在DaysString中,您可以自行手动解析该字符串。因此,上述映射将能够匹配URL,如:

/保存/2010/12/Monday/4/周二/6?周三=7

并在请求DTO中填充以下变量:

  • 年份:2010年
  • 第周:12
  • 星期三:7
  • DaysString:星期一/4/星期二/6