Asp.net mvc 动作生成wierd Url

Asp.net mvc 动作生成wierd Url,asp.net-mvc,asp.net-mvc-3,razor,Asp.net Mvc,Asp.net Mvc 3,Razor,我在这里遗漏了一些非常琐碎的东西,在剃须刀页面中的所有示例中: '@Url.Action("GetUserUnits", "MvcAccount")' 应该转换为,我想在javascript中使用: /MvcAccount/GetUserUnits 但它却产生了这样的结果: /?操作=GetUserUnits&控制器=MvcAccount 为什么??我一定是做错了什么事?基本上你的路线有点乱@Url.Action无法将路由与您的操作匹配 这可能是由于未定义默认路由造成的。通常,您应该在应用程序

我在这里遗漏了一些非常琐碎的东西,在剃须刀页面中的所有示例中:

'@Url.Action("GetUserUnits", "MvcAccount")'
应该转换为,我想在javascript中使用:

/MvcAccount/GetUserUnits

但它却产生了这样的结果:

/?操作=GetUserUnits&控制器=MvcAccount


为什么??我一定是做错了什么事?

基本上你的路线有点乱
@Url.Action
无法将路由与您的操作匹配

这可能是由于未定义默认路由造成的。通常,您应该在应用程序启动时将其注册到
Global.asax.cs
文件中

例如,它可能看起来像这样:

    protected void Application_Start()
    {
         routes.MapRoute(
            "Default",                                              
            "{controller}/{action}/{id}",                          
            new { controller = "Home", action = "Index", id = "" } 
        );
    }

如果要转到->/MvcAccount/GetUserUnits

使用


控制器确实工作(生成json),这不意味着路由正常吗?我的global.asaxAlso中正好有这些路由,所以我有一些额外的路由把事情搞砸了….(因为我混合了aspx和mvc)它现在可以工作尝试更改
id=“”
to
id=UrlParameter。可选
此行位于默认值之上:routes.MapPageRoute(“,”,“~/default.aspx”);。将其移动到默认值以下,即可正常工作。但是我的默认页面被破坏了。你能发布使用调用
Url.Action
的javascript吗?
@Html.ActionLink("nameOfyourLink", "GetUserUnits", "MvcAccount")
                   [displayName]     [Action]       [Controller]