url.Action(控制器,操作)未按预期路由

时间:2012-03-02 14:42:30

标签: asp.net-mvc-3 razor routing href

在我的ASP.NET MVC 3中,我正在使用此代码

<a href=@url.Action("myController", "myaction")>

但是当我点击它时,它不会进入我的行动。相反,在URL中我看到了这个

http://localhost:1402/?Length=2

我错过了什么吗?

感谢。

编辑:

以下是我的路线:

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

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

    }

4 个答案:

答案 0 :(得分:8)

第一个参数被解释为Action

@url.Action("myaction","myController")

答案 1 :(得分:3)

Url.Action的签名是:

Url.Action(string actionName, string controllerName)

根据您的代码,您的参数顺序不正确,您应该尝试:

@Url.Action("myAction", "myController")

还要记住要删除控制器的“Controller”部分,例如,如果我有一个带有Index操作的CustomerController,那就是:

@Url.Action("Index", "Customer")

答案 2 :(得分:1)

我遇到了同样的问题...... 我的解决方案:

@Html.ActionLink("Link text", "myAction", "myController", new { id=item.ID }, null)

只需将null添加到上一个参数。

答案 3 :(得分:0)

对于默认操作(未在路由中定义的操作),正常的HTTP GET将自动转到,您只需要使用 null 操作。

@ Url.Action(null,“Customer”)