0

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

@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 }
        );
    }
}

无法找到该资源。似乎它的链接错误

请求的 URL:/HICT/HiCT/BearingAssemblyForm
控制器:HiCT,视图/操作:BearingAssemblyForm,区域:HICT。

我怎么会喜欢这个?

太感谢了。

4

4 回答 4

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();

    ...
}
于 2012-08-06T17:07:50.403 回答
0

/Master/BearingAssemblyForm

通常,Master 是控制器,第二部分是动作,因此您的控制器名称似乎与您的路线不同。

于 2012-08-06T17:06:50.503 回答
0

你在打电话吗:

AreaRegistration.RegisterAllAreas();

Application_Start您的 Global.asax 中?您使用什么服务器进行开发 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

于 2012-08-06T17:10:06.550 回答
0

这是一个诡计,但这应该有效。

@Html.ActionLink("Tube Record Form", "action", "Area/controller")
于 2012-08-06T17:12:33.043 回答