• mvc html.beginform action值不正确的问题


    Using MVC, I have an html form helper in my view:
    using (Html.BeginForm("ActionOne", "ControllerOne")) ...

    Using the default route, the output for the action attribute is as expected:

    <form action="/ControllerOne/ActionOne" ...

    But registrering a new route with seemingly no matches affects the output.

    Routing code:

    public static void RegisterRoutes(RouteCollection routes)
    {
            routes
    .IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes
    .Add("testRoute", new Route("MyUrl", new MvcRouteHandler()));

            routes
    .MapRoute("Default", "{controller}/{action}", new { controller = "Home", action = "Index"});
    }


    Output:

    <form action="/MyUrl?action=ActionOne&amp;controller=ControllerOne"

    Is this by design or am I mising something fundamental?

    I have experienced this exact problem. I'm not sure exactly why the System.Web.Mvc.HtmlHelper seems to just use the first non-ignore route in the routetable to generate links etc from but I have found a workaround for the "BeginForm" issue.

    If you have named your "Default" route in the Global.asax.cs, for example:

    routes.MapRoute("Default", "{controller}/{action}", new {controller = "Home", action = "Index" });
     

    Then you can use the Html.BeginFormRoute method and call the name of the "Default" MVC route, then name the controller and action specifically, resulting in the correct url:

    using (Html.BeginRouteForm("Default", new { controller="YourController", action = "YourFormAction" })) { }

    Hey, that works. Its still notm ideal thouh, as changing routing on a global scale would need you to edit every occurrence of this :( – theGecko Nov 18 '09 at 10:02
    I agree it isn't ideal and may require some work to update all the uses of BeginForm -> BeginRouteForm if being done on an existing webapp, but if you have all your forms set up to use the default route (as specified above) then as long as you keep that route intact any other changes to routing will not affect the forms, so it is a robust solution. – Stephen Lloyd Nov 18 '09 at 10:18

  • 相关阅读:
    Java抓取网页数据(原网页+Javascript返回数据)
    Android Bundle类
    【设计模式】命令模式
    oracle触发器实例
    各大名企笔试及面经大全(程序猿必读)
    数据库索引的作用和长处缺点
    一个int类型究竟占多少个字节
    如何遮挡电影英汉字幕
    如何重启mysql服务
    修改mysql默认字符集的方法
  • 原文地址:https://www.cnblogs.com/seesky/p/2496652.html
Copyright © 2020-2023  润新知