标签: asp.net-mvc-areas

如何在动作链接中指定区域名称?

我有一个共享的母版页,我在我的mvc 2应用程序中使用了2个不同的区域.母版页有一个动作链接,当前指定控制器和动作,但当然如果我在错误的区域,链接不起作用.我认为带有区域参数的actionlink没有重载,是否可以这样做?

asp.net-mvc asp.net-mvc-areas asp.net-mvc-2

154
推荐指数
5
解决办法
8万
查看次数

区域之间的RedirectToAction?

有没有办法重定向到不同区域的特定操作/控制器?

asp.net-mvc redirecttoaction asp.net-mvc-areas

134
推荐指数
2
解决办法
7万
查看次数

在我的项目中遇到多个同名控制器的问题

我的ASP.NET MVC 3项目遇到以下错误:

找到了多个匹配名为"Home"的控制器的类型.如果为此请求提供服务的路由('Home/{action}/{id}')未指定名称空间来搜索与请求匹配的控制器,则会发生这种情况.如果是这种情况,请通过调用带有'namespaces'参数的'MapRoute'方法的重载来注册此路由.

对'Home'的请求找到了以下匹配的控制器:MyCompany.MyProject.WebMvc.Controllers.HomeController MyCompany.MyProject.WebMvc.Areas.Company.Controllers.HomeController

我的默认控制器文件夹中有一个HomeController,类名为MyCompany.MyProject.WebMvc.Controllers.HomeController.

我的global.asax中的RegisterRoutes方法如下所示:

    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
        );
    }
Run Code Online (Sandbox Code Playgroud)

然后我有一个名为Company的区域,在该区域的默认控制器文件夹中有一个HomeController,类名为MyCompany.MyProject.WebMvc.Areas.Company.Controllers.HomeController.

CompanyAreaRegistration文件中的RegisterArea方法如下所示:

   public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "Company_default",
            "Company/{controller}/{action}/{id}",
            new { area = "Company", action = "Index", id = UrlParameter.Optional }
        );
    }
Run Code Online (Sandbox Code Playgroud)

这就是我在本文开头突出显示的错误.我正在努力拼凑其他各种帖子的解决方案,没有运气.

是否有可能在默认控制器文件夹中有一个HomeController,然后在每个区域有一个?如果是这样,我是否需要对我的配置文件进行更改(假设我这样做)以使其工作?

任何帮助将非常感激!

asp.net-mvc asp.net-mvc-areas asp.net-mvc-3

94
推荐指数
3
解决办法
8万
查看次数

强制所有区域使用相同的布局

我有以下项目结构:

  • /查看/共享/ _layout;

  • /地区/区域1 /浏览/ ControllerName /指数;

...

  • /地区/ AreaN /浏览/ ControllerName /索引.

有没有办法强制所有区域使用_Layout作为基本布局

有没有办法在不添加_ViewStart文件的情况下执行操作(例如,通过路由配置)?

也可以看看:

如何在ASP.NET MVC 3 razor ViewStart文件中指定不同的布局?

asp.net-mvc asp.net-mvc-routing asp.net-mvc-areas razor

79
推荐指数
2
解决办法
3万
查看次数

未找到路径控制器或未实现IController

我有一个语言选择的MVC4项目:

  • NL
  • FR

1主要部分:

  • 关于
  • 常见(菜单)
  • 联系
  • 常问问题

还有3个方面:

  • 管理员
  • 顾客

在每个区域中,我至少有一个控制器,例如在Admin中,我有控制器概述,其中包含一个index.aspx页面的相应视图文件夹概述.

主页和所有主页(关于,常见问题等)工作并可以访问).

但是,当我按照url:localhost:xxxx/en/admin/overview时,我收到错误

未找到路径'/ en/admin/overview'的控制器或未实现IController.

即使路线是正确的(我可以通过Route Debugger看到).错误页面还显示当我想加载主菜单项时抛出错误:

<nav id="site-navigation" class="eightcol">
    @Html.Action("MenuItems", "Common")
</nav>
Run Code Online (Sandbox Code Playgroud)

- 删除了代码,因为无关紧要 -

一切似乎都井井有条,但MVC似乎无法加载位于主要部分的菜单.

因此,问题的根源是:我可以授予一个区域(例如Admin)访问我项目主要部分(home,common,about等)中的控制器吗?

c# asp.net-mvc-areas asp.net-mvc-4

72
推荐指数
12
解决办法
13万
查看次数

未找到"索引"视图或其主页.

The view 'Index' or its master was not found. The following locations were searched:
~/Views/ControllerName/Index.aspx
~/Views/ControllerName/Index.ascx
~/Views/Shared/Index.aspx
~/Views/Shared/Index.ascx
Run Code Online (Sandbox Code Playgroud)

使用ASP.Net mvc区域时出现此错误.调用区域控制器操作,但它似乎在"基础"项目视图中而不是在区域视图文件夹中查找视图.

asp.net-mvc asp.net-mvc-routing asp.net-mvc-areas

57
推荐指数
6
解决办法
10万
查看次数

我们如何在ASP.NET MVC中为整个区域设置授权?

我有一个管理区域,我只想要管理员进入该区域.我考虑过将Adminized属性添加到Admin区域中的每个控制器.是不是有优雅的解决方案,还是框架本身没有这个功能?

编辑:对不起,我之前应该提到这个.我正在使用从AuthorizeAttribute派生的自定义AuthorizedAttribute.

asp.net authorization asp.net-mvc-areas asp.net-mvc-2

53
推荐指数
5
解决办法
3万
查看次数

如何在ASP.NET Core中使用Area

如何Area在ASP.NET Core中使用?

我有一个需要管理员部分的应用.此部分要求将其视图放置在该区域中.所有以请求开头的请求Admin/都需要重定向到该区域.

asp.net-mvc-routing asp.net-mvc-areas asp.net-core-mvc asp.net-core

50
推荐指数
4
解决办法
3万
查看次数

ASP.NET MVC`Html.ActionLink`在"区域"之间

我已经为我的MVC3项目添加了一个新区域,我正在尝试从_Layout页面链接到新区域.我添加了一个名为"Admin"的区域,它有一个控制器"Meets".

我使用visual studio designer添加区域,因此它具有正确的区域注册类等,global.asax文件正在注册所有区域.

但是,当我在根目录中的页面中使用以下2个操作链接时,我遇到了一些问题:

@Html.ActionLink("Admin", "Index", "Meets", new { area = "Admin" }, null)
@Html.ActionLink("Admin", "Index", "Meets", new { area = "" }, null)
Run Code Online (Sandbox Code Playgroud)

单击这两个链接时,我将被带到管理区域中的Meets控制器,然后应用程序继续发出错误,指出它无法找到索引页面(即使索引页面存在于区域子视图文件夹中 - 目录.

第一个链接的href如下所示:

http://localhost/BCC/Meets?area=Admin

并且第二个链接的href看起来像这样:

http://localhost/BCC/Meets

此外,如果我点击我希望创建的链接:

http://localhost/BCC/Admin/Meets

我只是得到一个资源无法找到错误.一切都非常令人困惑!我希望有人能帮帮忙...

asp.net-mvc asp.net-mvc-areas razor

48
推荐指数
3
解决办法
8万
查看次数

具有共享布局的ASP.NET MVC区域

我在我的ASP.NET MVC 3应用程序中定义了一个区域(Admin),_ViewStart.cshtml在该区域中创建并添加Layout = "~/Views/Shared/_Layout.cshtml";到该区域以具有统一的站点布局.

我还将以下代码添加到_Layout.cshtml:

if (HttpContext.Current.User.IsInRole("Admin"))
{
    <li>@Html.ActionLink("Items List", "Index", "Items", new { area = "Admin" }, null)</li>
}
Run Code Online (Sandbox Code Playgroud)

Admin区域_Layout.cshtml以其布局正确显示.但是页面中的所有导航链接现在都指向Admin子文件夹.

例如,在我的布局中,我<li>@Html.ActionLink("About Us", "About", "Home")</li>指出了Mysite/Home/About.但点击管理链接后,"关于我们"链接指向/Admin/Home/About.

如果让_Layout.cshtml链接指向正确的地址,我该怎么办?
谢谢.

asp.net-mvc-routing asp.net-mvc-areas asp.net-mvc-3

39
推荐指数
1
解决办法
2万
查看次数