2011-09-01 89 views
0

任何想法为什么找不到此链接?未找到MVC3路由

context.MapRoute(null, "Admin/CompanyUserDelete/{userprofileid}", new { controller = "Admin", action = "CompanyUserDelete", userprofileid = UrlParameter.Optional }); 

它使用AreaRegistration类定义。

public class AdminAreaRegistration : AreaRegistration 
    { 
     public override string AreaName 
     { 
      get 
      { 
       return "Admin"; 
      } 
     } 

public override void RegisterArea(AreaRegistrationContext context) 
     { 
      context.MapRoute(null, "Admin", new { controller = "Admin", action = "Index" }); 

      context.MapRoute(null, "Admin/Users", new { controller = "Admin", action = "CompanyUsers" }); 
      context.MapRoute(null, "Admin/Users/Create", new { controller = "Admin", action = "CreateUser" }); 
      context.MapRoute(null, "Admin/Users/{userprofileid}", new { controller = "Admin", action = "CompanyUser" }); 

      context.MapRoute(null, "Admin/CompanyUserDelete/{userprofileid}", new { controller = "Admin", action = "CompanyUserDelete", userprofileid = UrlParameter.Optional }); 

      context.MapRoute(null, "Admin/Users/{userprofileid}/Photo", new { contro 
ller = "Admin", action = "UserImage" }); 
} 
</code></pre> 

这里是未找到链接。

@Html.ActionLink("Delete", "CompanyUserDelete", "Admin", new { area = "Admin", userprofileid = userItem.UserProfileId }, null) 
+0

你忘了展现尤其哪一个环节没有找到。您只显示您的管理区域路线定义。 –

+0

谢谢。我更新了消息。 – Keith

回答

0

CompanyUserDelete没有声明您发送给它的第一个参数“area”。


    context.MapRoute(null, "Admin/CompanyUserDelete/{userprofileid}", new { controller = "Admin", action = "CompanyUserDelete", userprofileid = UrlParameter.Optional }); 

但在这里,你有“区”

@Html.ActionLink("Delete", "CompanyUserDelete", "Admin", new { area = "Admin", userprofileid = userItem.UserProfileId }, null) 
+0

这个为什么有效? - > \t @ Html.ActionLink(“Edit”,“CompanyUser”,“Admin”,new {area =“Admin”,userprofileid = userItem.UserProfileId},null) – Keith

+0

Steve Sanderson的书说area =是保留路由参数名称 – Keith

+0

它是 - 在你的MapRoute中。林不是100%确定,但你可以在参数中指定它,而不需要它在路线中。我将不得不在这方面进行一些研究。你确实 - 我假设 - 有一个名为CompanyUserDelete的操作,对吧?它的方法签名是什么? –