如何在 MVC WEBAPI 路由中为以下内容传递 QueryString URL

How to Pass QueryString in MVC WEBAPI routing for the following URL

我有以下 URL。当我通过传递值在浏览器中输入此 url 时,我无法访问我的应用程序中的 api 方法。我是 MVC 的新手。我不确定我们是否可以在 MVC WebApi 中传递 QueryString Routing.If 可能,请帮助在 MVC WebAPI 路由中传递 QueryString。

http://localhost:1665/api/Load/LoadDetails?ID={1}&Latitude={2}&Longitude={3}&Uncertaint
y={4}&Street1={5}&Street2={6}&Neighborhood={7}&Ci&LocationDateTimeUTC={12} 

在路由配置中我有以下代码,

       config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}",
            defaults: new { action = "Get" }
        );

        config.Routes.MapHttpRoute(
            name: "DefaultApiId",
            routeTemplate: "api/{controller}/{id:int}",
            defaults: new { id = RouteParameter.Optional }
        );

        ReportsControllerConfiguration.RegisterRoutes(config);
        config.MapHttpAttributeRoutes();

在 ApiController 中

       [RoutePrefix("Load")]
        public class LoadController : ApiController
        {
        #region RESTful Methods

        [HttpGet]
        [Authorize()]     
        [Route("saveintransitcheckcall/{ID}/{Latitude}/{Longitude}/{Uncertainty}/{Street1}/{Street2}/{Neighborhood}/{City}/{State}/{Postal}/{Country}/")]
        public HttpResponseMessage SaveInTransitCheckCall(int ID)
        {}

请帮忙获取方法。提前致谢。

如果你想通过如下查询字符串参数传递参数url:

http://localhost:1665/api/Load/LoadDetails?ID={1}&Latitude={2}&Longitude={3}&Uncertaint
y={4}&Street1={5}&Street2={6}&Neighborhood={7}&Ci&LocationDateTimeUTC={12} 

然后使用下面的代码:

[HttpGet]
[Authorize()] 
[Route("saveintransitcheckcall")]
public IHttpActionResult SaveInTransitCheckCall()
{
  var queryString = this.Request.GetQueryNameValuePairs();

  var ID = queryString.SingleOrDefault(x => x.Key == "ID").Value;
  var Latitude = queryString.SingleOrDefault(x => x.Key == "Latitude").Value;
  //read other variables like above


  //do your remaining code here
}

否则您可以使用 RESTful 方法尝试以下代码:

[HttpGet]
[Authorize()]     
[Route("saveintransitcheckcall/{ID:int}/{Latitude:decimal}/{Longitude:decimal}/{Uncertainty}/{Street1}/{Street2}/{Neighborhood}/{City}/{State}/{Postal}/{Country}/")]
public HttpResponseMessage SaveInTransitCheckCall(int ID, decimal Latitude, decimal Longitude, string Uncertainty, string Street1, string Street2, string Neighborhood, string City, string State, string Postal, string country)
{
  //do your remaining code here
}

请告诉我,这对你有用吗?