0

我在 global.asax 中更改了路由,因此如果手动输入查询字符串,则该值将保留在地址栏中:

 routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Account", action = "LogOn", id = UrlParameter.Optional}   
        );
        routes.MapRoute(
            "OrderId", // Route name
            "{controller}/{action}/{db}", // URL with parameters
            new { controller = "Account", action = "LogOn", db = UrlParameter.Optional}                   );

我在这里有 2 个值,因为 id 参数在整个应用程序中使用,例如:

        public ActionResult AddNote(string id)

db 参数是为了防止用户想要连接到不同的数据库并通过查询字符串输入并在出现问题时保留在 url 中,例如错误的用户名/密码。

       thesite.com/?db=somedb

该应用程序像以前一样工作,除了没有像这样指定操作的表单:

     @using (Html.BeginForm())

此表单将呈现给客户端

 <form method="post" action="/UserTasks/NewOrder/Index">

永远不会调用操作“/UserTasks/NewOrder/Index”。没有错误或任何东西。我原来的 global.asax 看起来像这样,表单会按预期发回服务器:

              routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id= UrlParameter.Optional }
        );

Home/Index 操作除了重定向到 Account/LogOn 之外什么也没做,这就是为什么我消除了 Home/Index 调用并直接转到 Account/Logon 的主页。

我需要在 global.asax 中进行哪些更改,以便我所有没有显式输入操作的表单都会像以前一样触发 ASP.Net MVC 提供给它的默认操作?谢谢

4

0 回答 0