首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GET表单post中的asp.net mvc出站路由

GET表单post中的asp.net mvc出站路由
EN

Stack Overflow用户
提问于 2010-09-18 03:05:47
回答 1查看 206关注 0票数 0

我有一个看起来像这样的路由:

代码语言:javascript
复制
new { controller = "ControllerName", action = "PhotoGallery", slug = "photo-gallery", filtertype = UrlParameter.Optional, filtervalue = UrlParameter.Optional, sku = UrlParameter.Optional}

我有一个看起来像这样的表单:

代码语言:javascript
复制
  <%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:

代码语言:javascript
复制
www.site.com/photo-gallery/1/selectedvalue

而不是像“

代码语言:javascript
复制
www.site.com/photo-gallery?filtertype=1&filtervalue=selectedvalue

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-18 05:17:47

如果您只有一些参数,Mvc将创建一个查询字符串类型的url,除非它找到一个完全匹配的Url。

建议您需要以下内容:

代码语言:javascript
复制
routes.Add("testRoute", 
new Route("/{action}/{controller}/{slug}/{filtertype}/{filtervalue}",
new { controller = "ControllerName", action = "PhotoGallery", slug = "photo-gallery", filtertype = UrlParameter.Optional, filtervalue = UrlParameter.Optional}
);

确保此路径在现有路径之前

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3738198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档