我是mvc的新手,我有一种情况,我确信我正在正确地映射路线,尽管不是。
这是一个非常基本的登录表单,可以选择传入参数。
这是html
<li><a href="@Url.Action("LoginForm", "Home", new {userName="user"})">Login</a></li>
这是'Home'控制器中的动作方法
public ViewResult LoginForm(string userName)
{
return View();
}
这是我尝试绘制路线的方法
routes.MapRoute(
null,
"Login/{userName}",
new { controller = "Home ", action = "LoginForm", UrlParameter.Optional }
);
但网址显示如下
/Home/LoginForm?loginUser=user
我的目标是以下
Login/user
建议也许是为什么它没有正确映射。我已经在Global.asax.cs文件中注册了许多路由。它可能与他们注册的订单有关吗?
答案 0 :(得分:3)
试试这个:
<li><a href="@Url.Action("LoginForm", "Home", new {userName="user"})">Login</a></li>
将参数 loginUser 更改为 userName 。
答案 1 :(得分:1)
使用 userName 代替 loginUser
<li><a href='@Url.Action("LoginForm", "Home", new {userName="user"})'>Login</a></li>
答案 2 :(得分:0)
您点击的地址与MapRoute
中指定的地址不同。映射的路由不会触发。更改参数和操作名称。
<li><a href="@Url.Action("Login", "Home", new {userName="user"})">Login</a></li>
您需要访问/Home/Login
而不是/Home/LoginForm
。路由自动完成,如果访问了正确的地址。
修改强>: 在您的地址编辑之后:
Login/{userName}
生成Url.Action
等链接;如果您未指定控制器,则默认为Home
controller Login/{userName}
链接(由于映射的路由)<li><a href="/Login/user">Login</a></li>
请注意,每个JavaScript添加/删除了userName
。