如何解决MVC3 / Razor表单提交与路线映射?
| 我在Global.asax中定义了以下路由: routes.MapRoute(name: \"Home\",url: \"\",defaults: new { controller = \"Home\",action = \"Index\" });
routes.MapRoute(name: \"CityStateResults\",url: \"{city}-{state}/{searchTerm}\",defaults: new { controller = \"Results\",action = \"SearchCityState\" });
routes.MapRoute(name: \"CanadianProvinceResults\",url: \"CanadianProvinces/{state}/{searchTerm}\",action = \"SearchCanadianProvinces\" });
routes.MapRoute(name: \"AllCanadianResults\",url: \"Canada/{searchTerm}\",action = \"SearchAllOfCanada\" });
现在,我想编写Razor表单提交功能,该功能接受两个字段:txtSearchTerm和txtLocation。
txtLocation的格式将始终由[City,State]或[State]或[Country]组成,并且由数据库驱动,因此该字段中将不接受除db中列出的值以外的其他值。
如果location是[City,State],我希望表单重定向到/ City-State / searchTerm。
如果位置匹配一个州,我想重定向到/ CanadianProvinces / [州] / [搜索项]。
如果位置与国家/地区匹配,我想重定向到/ Canada / [searchterm]。
我有一个带有一些操作设置的结果控制器,但不清楚第一步。我确定我可以使用一些客户端javascript和重定向来做到这一点,但是我想知道使用C#,Razor和MVC3的标准方式。
谢谢。
解决方法
默认情况下,提交将发送到呈现页面的同一控制器。如果没有,您可以使用对特定控制器/方法的ajax调用作为目标方法。在路由表中放置复杂的路由规则确实很难维护。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。