C# ASP.MVC 4-使用第一个查询字符串参数&;附加到Url中的操作
如果可能的话,我想整理一下这个网址 现在它看起来像是从ActionResult GET返回的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参数不用于任何用途,因此
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,它仍然是一样的。