Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.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# ASP.MVC 4-使用第一个查询字符串参数&;附加到Url中的操作_C#_Asp.net_Asp.net Mvc_Asp.net Mvc Routing - Fatal编程技术网

C# ASP.MVC 4-使用第一个查询字符串参数&;附加到Url中的操作

C# ASP.MVC 4-使用第一个查询字符串参数&;附加到Url中的操作,c#,asp.net,asp.net-mvc,asp.net-mvc-routing,C#,Asp.net,Asp.net Mvc,Asp.net Mvc Routing,如果可能的话,我想整理一下这个网址 现在它看起来像是从ActionResult GET返回的 http://localhost/Controller/Action?City=SomeCity&GeoLat=00.000&GeoLong=-0.00000494 这就是我想要实现的目标 http://localhost/Controller/Action/SomeCity?GeoLat=00.000&GeoLong=-0.00000494 City参数不用于任何用途,因此

如果可能的话,我想整理一下这个网址

现在它看起来像是从ActionResult GET返回的

http://localhost/Controller/Action?City=SomeCity&GeoLat=00.000&GeoLong=-0.00000494
这就是我想要实现的目标

http://localhost/Controller/Action/SomeCity?GeoLat=00.000&GeoLong=-0.00000494
City参数不用于任何用途,因此手动将第一个url编辑为第二个url确实会返回正确的数据

我甚至尝试在动作中添加int城市变量,但这并不理想

routes.MapRoute(
                "Default",
                "{controller}/{action}-{City}/",
                new { controller = "House", action = "Location", City = UrlParameter.Optional }
                );

谢谢

你的路线改变就快到了。将此代码添加到默认路由之前

routes.MapRoute(
    "CityRoute",
    "{controller}/{action}/{City}",
    new { controller = "House", action = "Location" }
);

请注意,我稍微更改了url格式并删除了可选参数部分(不需要)

正如我正确理解的那样,这将是您的解决方案:

        routes.MapRoute(
            name: "City",
            url: "House/Location/{City}",
            defaults: new { controller = "House", action = "Location" }
        );
控制器:

[HttpGet]
public ActionResult Location(string City, string GeoLat, string GeoLong){  }
此外,您必须在默认路线之前添加以下内容:

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Account", action = "Index", id = UrlParameter.Optional }
        );

至少,现在您将能够在控制器方法中实现
GeoLat
GeoLong
值,以及
City
参数。

要在MVC4中获得您想要的url,您有两个选项

  • 使用
    城市
    参数绘制路线图:

    routes.MapRoute(
        "City",
        "{controller}/{action}/{city}",
        new { controller = "House", action = "Location", city = UrlParameter.Optional }
    );
    
  • 将您的
    city
    param重命名为
    id
    ,并使用默认路线映射


  • (MVC 5引入了一个类,该类允许您在单个操作上指定映射。)

    谢谢,我的RegisterRoutes方法没有被击中,这没有帮助!旧的URL仍然是从ActionResult返回的,我怀疑PageList对象可能与它有关返回视图(Views.Location,searchResults.ToPagedList(pageNumber,pageSize));尽管删除了这个URL,它仍然是一样的。