路线没有映射mvc 3

时间:2013-12-17 12:45:28

标签: c# asp.net-mvc-3

我是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文件中注册了许多路由。它可能与他们注册的订单有关吗?

3 个答案:

答案 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