我有一个看起来像这样的路由:
new { controller = "ControllerName", action = "PhotoGallery", slug = "photo-gallery", filtertype = UrlParameter.Optional, filtervalue = UrlParameter.Optional, sku = UrlParameter.Optional}我有一个看起来像这样的表单:
<%using(Html.BeginForm("PhotoGallery", "ControllerName", FormMethod.Get)) {%>
<%:Html.Hidden("filtertype", "1")%>
<%:Html.DropDownList("filtervalue", ViewData["Designers"] as SelectList, "Photos by designer", new { onchange = "selectJump(this)" })%>
<%}%>现在,当表单提交时,我得到了作为查询字符串(?filtertype=1等)附加到url的表单值,有没有办法让这个表单使用路由来呈现URL?
因此,表单将发布一个如下所示的URL:
www.site.com/photo-gallery/1/selectedvalue而不是像“
www.site.com/photo-gallery?filtertype=1&filtervalue=selectedvalue谢谢!
发布于 2010-09-18 05:17:47
如果您只有一些参数,Mvc将创建一个查询字符串类型的url,除非它找到一个完全匹配的Url。
建议您需要以下内容:
routes.Add("testRoute",
new Route("/{action}/{controller}/{slug}/{filtertype}/{filtervalue}",
new { controller = "ControllerName", action = "PhotoGallery", slug = "photo-gallery", filtertype = UrlParameter.Optional, filtervalue = UrlParameter.Optional}
);确保此路径在现有路径之前
https://stackoverflow.com/questions/3738198
复制相似问题