【问题标题】:asp.net mvc outbound routing from a GET form post来自 GET 表单帖子的 asp.net mvc 出站路由
【发布时间】:2010-09-17 19:05:47
【问题描述】:

我的路线如下所示:

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)" })%>
  <%}%>

现在提交表单时,我将表单值作为查询字符串附加到 url (?filtertype=1 等) 有没有办法让这个表单使用路由来呈现 URL?

所以表单会发布一个如下所示的 URL:

www.site.com/photo-gallery/1/selectedvalue

不喜欢”

www.site.com/photo-gallery?filtertype=1&filtervalue=selectedvalue

谢谢!

【问题讨论】:

    标签: asp.net asp.net-mvc-2 routing


    【解决方案1】:

    如果你只有一些参数存在,Mvc 将创建一个 Query String 类型的 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}
    );
    

    确保这是在您现有的路线之前

    【讨论】:

    • 感谢您的回复!我最终使用 PRG 模式来获得我需要的效果。我的路由太复杂了,不允许这样的一般规则。
    猜你喜欢
    • 2011-03-13
    • 2011-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 2011-02-13
    • 1970-01-01
    相关资源
    最近更新 更多