ASP.NET MVC3链接区“无法找到资源”

时间:2012-08-06 17:04:30

标签: asp.net asp.net-mvc-3 razor hyperlink area

我刚刚创建了一个新的区域来组织我的代码。 但目前我无法将它从我的“基础”或“根”索引页面链接到我的新区域页面。

@Html.ActionLink("Tube Record Form", "BearingAssemblyForm", "_HiCT", new { area = "HICT" }, null)

 public class HICTAreaRegistration : AreaRegistration
{
    public override string AreaName
    {
        get
        {
            return "HICT";
        }
    }

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "HICT_default",
            "HICT/{controller}/{action}/{id}",
            new {controller = "_HiCT", action = "BearingAssemblyForm", id = UrlParameter.Optional }
        );
    }
}

无法找到资源。 它似乎错误地链接了

  

请求的网址:/ HICT / HiCT / BearingAssemblyForm    
控制器:HiCT,   查看/动作:BearingAssemblyForm,区域:HICT。

我怎么会喜欢这个?

非常感谢你。

4 个答案:

答案 0 :(得分:1)

试试这个:

@Html.ActionLink("LinkText",
        "ActionName",
        "ControllerName",
        new { area = "HICT" }, null)

我认为您没有使用正确的@Html.ActionLink方法重载。

首先,查看您的区域是否已正确注册:

public class Routes : AreaRegistration
{
    public override string AreaName
    {
        get
        {
            return "HICT";
        }
    }

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "HICT_default",
            "HICT/{controller}/{action}/{id}",
            new { controller = "_HiCT", action = "BearingAssemblyForm", id = UrlParameter.Optional }
    );
}

确保您在RegisterAllAreas文件中呼叫Global.asax.cs

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();

    ...
}

答案 1 :(得分:0)

/主/ BearingAssemblyForm

通常,Master是控制器,第二部分是动作,所以看起来您的控制器名称与您的路线不同。

答案 2 :(得分:0)

你在打电话:

AreaRegistration.RegisterAllAreas();
在Global.asax中的Application_Start

?你用什么服务器开发Cassini,IISExpress,IIS?

在查看更详细的信息后进行编辑。

如果您有此代码,请在您的管理区域注册文件中

context.MapRoute(
    "Admin_default",
    "Admin/{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = UrlParameter.Optional },
    new string[] { "CoolProject.Web.Areas.Admin.Contollers" }
);

我认为CoolProject.Web.Areas.Admin.Contollers中存在拼写错误,应该是CoolProject.Web.Areas.Admin.Controllers

答案 3 :(得分:0)

已经有一段时间了,但这应该有效。

@Html.ActionLink("Tube Record Form", "action", "Area/controller")