C# ServiceStack.Net中的多个可选参数
我正在尝试使用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.像这样缺少参数值
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