我有一个共享的母版页,我在我的mvc 2应用程序中使用了2个不同的区域.母版页有一个动作链接,当前指定控制器和动作,但当然如果我在错误的区域,链接不起作用.我认为带有区域参数的actionlink没有重载,是否可以这样做?
有没有办法重定向到不同区域的特定操作/控制器?
我的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,然后在每个区域有一个?如果是这样,我是否需要对我的配置文件进行更改(假设我这样做)以使其工作?
任何帮助将非常感激!
我有以下项目结构:
/查看/共享/ _layout;
/地区/区域1 /浏览/ ControllerName /指数;
...
有没有办法强制所有区域使用_Layout作为基本布局?
有没有办法在不添加_ViewStart文件的情况下执行此操作(例如,通过路由配置)?
也可以看看:
我有一个语言选择的MVC4项目:
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等)中的控制器吗?
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区域时出现此错误.调用区域控制器操作,但它似乎在"基础"项目视图中而不是在区域视图文件夹中查找视图.
我有一个管理区域,我只想要管理员进入该区域.我考虑过将Adminized属性添加到Admin区域中的每个控制器.是不是有优雅的解决方案,还是框架本身没有这个功能?
编辑:对不起,我之前应该提到这个.我正在使用从AuthorizeAttribute派生的自定义AuthorizedAttribute.
如何Area在ASP.NET Core中使用?
我有一个需要管理员部分的应用.此部分要求将其视图放置在该区域中.所有以请求开头的请求Admin/都需要重定向到该区域.
asp.net-mvc-routing asp.net-mvc-areas asp.net-core-mvc asp.net-core
我已经为我的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 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链接指向正确的地址,我该怎么办?
谢谢.