ASP.NETWebAPI中的可选查询字符串参数我需要实现以下WebAPI方法:/api/books?author=XXX&title=XXX&isbn=XXX&somethingelse=XXX&date=XXX所有查询字符串参数都可以为空。也就是说,调用者可以指定从0到所有5个参数。在MVC4测试版中,我曾经执行以下操作:publicclassBooksController:ApiController{//GET/api/books?author=tolk&title=lord&isbn=91&somethingelse=ABC&date=1970-01-01publicstringGetFindBooks(stringauthor,stringtitle,stringisbn,stringsomethingelse,DateTime?date){//...}}MVC4RC看起来不再像这样了。如果我指定的参数少于5个,它会以404响应:在控制器“书籍”上找不到与请求匹配的操作。正确的方法签名是什么,这样它就可以像以前一样运行,而不必在URL路由中指定可选参数?此问题已在MVC4的常规版本中修复。现在你可以这样做了:开箱即用。正如vijay所建议的,多个参数可以作为单个模型传递。当您使用FromUri参数属性时,这适用于GET。这告诉WebAPI从查询参数填充模型。结果是一个只有一个参数的干净的控制器动作。有关详细信息,请参阅:http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-apipublicclassBooksController:ApiController{//GET/api/books?author=tolk&title=lord&isbn=91&somethingelse=ABC&date=1970-01-01publicstringGetFindBooks([FromUri]BookQueryquery){//...}}publicclassBookQuery{publicstringAuthor{get;放;}公共字符串标题{得到;放;}publicstringISBN{get;放;}publicstringSomethingElse{get;放;公共日期时间?日期{得到;只是冲突。//GET/api/books?author=tolk&title=lord&isbn=91&somethingelse=ABC&date=1970-01-01publicstringGetFindBooks([FromUri]BookQueryquery,[FromUri]Pagingpaging){//...}publicclassPaging{公共字符串排序{得到;放;}publicintSkip{得到;放;}publicintTake{get;诠释?)。对所有参数使用初始默认值,如下所示.如果你想传递多个参数,你可以创建一个模型而不是传递多个参数。如果你不想传递任何参数,那么你也可以跳过它,这样你的代码就会看起来整洁干净。无法为未声明为“可选”函数的参数提供默认值C#学习教程:ASP.NETWebAPI中可选查询字符串参数分享的所有内容,如果对你有用,需要进一步了解C#学习教程,希望大家多多关注—config.Routes.MapHttpRoute(_name:="books",_routeTemplate:="api/{controller}/{action}/{id}/{pid}/{sort}/{limit}",_defaults:=NewWith{.id=RouteParameter.Optional,.pid=RouteParameter.Optional,.sort=UrlParameter.Optional,.limit=UrlParameter.Optional}_)本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
