【发布时间】:2015-08-08 00:05:15
【问题描述】:
我有一个混合了 WebForms 和 MVC 的应用程序。
HomeController 是一个简单的控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
}
在视图中 - /Views/Home/Index.cshtml,我使用 Html.BeginForm 来呈现表单。
@using(Html.BeginForm("Index", "Home", FormMethod.Post, new { @class = "form-horizontal"}))
{
@Html.TextBox("username", "");
@Html.Password("password", "");
<button type="submit">Login</button>
}
路由配置如下。前 2 条路由使用 MapPageRoute 映射到网络表单。
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapPageRoute("admin", "admin", "~/admin.aspx");
routes.MapPageRoute("adminEdit", "adminEdit", "~/adminEdit.aspx");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
但是在我的主页(“主页”是我的默认控制器)呈现给浏览器之后,表单操作有 url:
/admin?action=Index&controller=Home
不是“/Home/”,即使我已将“Index”和“Home”作为 actionname 和 controllername 分别传递给 Html.Beginform。
当我浏览到我的主页时,网址路由工作正常。但是表单的“操作”有无效的 url。它似乎与我配置的第一条路线相匹配。为什么?
【问题讨论】:
标签: asp.net asp.net-mvc routing asp.net-mvc-routing