asp.net-web-api - Web API 中的操作和 QueryString 参数

标签 asp.net-web-api query-string asp.net-web-api-routing

我想让我的通用路由确定查询字符串是否像这样在 Url 中传递

http://localhost/query/DailyLogs/1?dateOfLog='1/13/2013'

这是我目前的路线定义:
routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "query/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional}
        );

我已经阅读了一些答案,说将 dateOfLog 值添加为 Route 定义上的可选操作:
routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "query/{controller}/{id}/{dateOfLog}",
            defaults: new { id = RouteParameter.Optional, 
            dateOfLog = RouteParameter.Optional }
        );

这似乎不起作用,也许我做错了什么,我不确定。

这就是我目前处理问题的方式,但我想使用路由引擎的 ModelBinding 功能:
 var queryValue = Request.RequestUri.ParseQueryString();
 string dateOfLog = queryValue["dateOfLog"];

请告诉我如何创建一个路由定义,该定义将正确使用 ModelBinding 并将我的自定义 url 映射到 Controller 的参数。

最佳答案

在 Controller 操作中,只需包含 DateTime dateOfLog作为方法参数并继续使用查询字符串,因为它会被很好地映射,如果找到它,Web API 将使用正确的方法重载。

关于asp.net-web-api - Web API 中的操作和 QueryString 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15711182/

相关文章:

asp.net-mvc - JsonIgnore 在 System.Web.Mvc.Controller 中不起作用

c# - 在 web api 中使用多个自定义操作路由配置

php - 在 PHP 的 require_once 中使用查询字符串

c# - url.link 错误 : A route named 'Default' could not be found in the route collection. 参数名称:name

c# - Asp.Net Web API 2 中带参数的属性路由

ajax - 使用 MVC 4 API Controller 发布 JSON

security - Web API OAuth 不记名 token 安全性

next.js - 如何从 Next.js 中的 URL 获取(查询字符串)参数?

c# - 为什么我的查询字符串值在页面加载一定时间后会丢失?

ASP.NET 核心 Web API : Routing by method name?