Tag: asp.net mvc areas

MVC5区域无法正常工作

我的MVC 5应用程序中有两个区域无法正常工作。 当我使用以下链接http://localhost:45970/Admin/Admin ,应用程序加载正确的index.cshtml whicxh位于/Areas/Admin/Views/Admin/Index.cshtml但是当我尝试加载http://localhost:45970/Admin它尝试从/Views/Admin/Index.cshtml加载Index.cshtml文件。 所有搜索结果都说我正在做正确的事情。 我甚至加载了一个示例API项目来查看其中的帮助区域,以确保我正确地执行操作。 这是我的RouteConfig.cs文件 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Routing; namespace BlocqueStore_Web { public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”); routes.MapRoute( name: “Default”, url: “{controller}/{action}/{id}”, defaults: new { controller = “Home”, action = “Index”, id = UrlParameter.Optional }, namespaces: new[] { […]

与区域同名的控制器 – Asp.Net MVC4

我在主/顶部区域有一个Contacts控制器,我有一个名为“Contacts”的区域。 如果我在注册顶级路线之前注册我的区域,我会将POST 404s发送到Contacts控制器: protected void Application_Start() { AreaRegistration.RegisterAllAreas(); ModelBinders.Binders.DefaultBinder = new NullStringBinder(); RouteConfig.RegisterRoutes(RouteTable.Routes); } 而且,如果我在路线后注册我的区域,我的404到联系人控制器就会消失,但我到联系人区域的路线现在是404s。 …记录了许多重复的控制器名称问题,但我没有找到该区域与控制器名称相同的特定方案。 …可能很容易解决。 会很感激帮助。 😀 fwiw,我正在使用显式命名空间注册我的Contacts区域: public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”); routes.MapRoute( name: “Default”, url: “{controller}/{action}/{id}”, defaults: new { controller = “Home”, action = “Index”, id = UrlParameter.Optional }, namespaces: new[] { “MyMvcApplication.Controllers” } ); }

Asp.net Mvc地区路由问题

我希望网站的默认页面是Login.cshtml。 我得到了例外: 错误:未找到视图“LogIn”或其主节点,或者没有视图引擎支持搜索的位置。 搜索了以下位置: 我有2个区域。 结构如下所示。 我的routeconfig如下所示。 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Routing; namespace Portal.Web { public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”); routes.MapRoute( name: “Default”, url: “{controller}/{action}/{id}”, defaults: new { controller = “Home”, action = “LogIn”, id = UrlParameter.Optional }, namespaces: new[] { “Portal.Web.Areas.Management” […]

Asp.net MVC – 从区域渲染局部视图

我创建了一个区域,可以处理我们所有开发产品中的一些通用的东西,就像登录,HTML助手等。在该区域内,我有一个局部视图,我试图在该区域之外引用。 我已经注册了该地区 public class Routes : AreaRegistration { public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( “Common_default”, “Common/{controller}/{action}/{id}”, new { controller = “Account”, action = “Index”, id = UrlParameter.Optional }); } public override string AreaName { get { return “MvcCommons”; } } } 而现在在常规项目中,我正在尝试引用MvcCommons领域中的一个视图…… TestGrid 但我一直认为没有找到视图。 之前,在创建MVC Commons项目时,我收到了查看错误,但错误告诉我它在区域文件夹和默认视图文件夹中都有查看。 这次,我只获取默认文件夹。 有没有办法实现这个目标? 感谢大家!

从ASP MVC中的区域控制器链接到根控制器

如何从我的某个区域链接到我的一个根控制器? 这给了我一个错误: 路由表中的路由与提供的值不匹配。 我在根控制器集合中的一个名为Admin的文件夹中有一个名为Page控制器。 我可以通过键入\ Admin \ Page来访问此控制器。 这是我注册路线的方式: routes.MapRoute( “Admin”, “Admin/{controller}/{action}/{id}”, new { controller = “Admin”, action = “Index”, id = “” } ); 我希望我可以在我的视图中使用此语法来解决“Admin”路由,但这不起作用。 关于如何修复它的任何想法?

为什么我的区域特定Web API可以从所有其他区域访问?

我目前正在开发一个ASP.NET MVC 4 Web应用程序项目,该项目必须遵循以下设计决策: 主MVC应用程序驻留在解决方案的根目录中。 所有管理员function都位于单独的区域中。 每个外部方(例如供应商)都有自己的区域。 每个区域,包括根,构成一个分离良好的function块。 一个区域的function可能不会暴露给另一个区域。 这是为了防止未经授权的数据访问。 每个区域(包括根)都有自己的RESTfull API(Web API)。 所有区域中的所有常规控制器(包括根)都按预期工作。 但是,我的一些Web API控制器出现意外行为。 例如,有两个具有相同名称但位于不同区域的Web API控制器会产生以下exception: 找到了多个匹配名为“clients”的控制器的类型。 如果为此请求提供服务的路由(’api / {controller} / {id}’)发现多个控制器定义了相同名称但名称不同的命名空间(不受支持),则会发生这种情况。 对’clients’的请求找到了以下匹配的控制器:MvcApplication.Areas.Administration.Controllers.Api.ClientsController MvcApplication.Controllers.Api.ClientsController 这看起来很奇怪,因为我有不同的路线,应该将两者分开。 这是我的管理部门的区域注册: public class AdministrationAreaRegistration : AreaRegistration { public override string AreaName { get { return “Administration”; } } public override void RegisterArea(AreaRegistrationContext context) { context.Routes.MapHttpRoute( name: “Administration_DefaultApi”, routeTemplate: […]

在为ASP.NET MVC 2.0应用程序注册区域时提供或过滤程序集

我有一个大型应用程序,目前作为WebForms和MVC 2.0的混合体存在。 启动我的应用程序是可怕的,罪魁祸首主要是因为AreaRegistration.RegisterAllAreas调用。 更具体地说,它正在使用System.Web. Compilation.BuildManager.GetReferencedAssemblies System.Web. Compilation.BuildManager.GetReferencedAssemblies枚举应用程序直接引用的程序集中的所有类型,并测试它们是否派生自AreaRegistration 。 不幸的是,我有许多第三方程序集恰好相当广泛,所以这个初始加载可能非常糟糕。 如果我可以告诉它哪些程序集要查找AreaRegistrations ,或者甚至手动注册区域,我会有更好的结果。 我可以收集AreaRegistration所有内部来创建和调用注册,但我只是好奇其他人是否已经解决了这个问题。

控制器按区域划分

可能重复: 如何注册已在AREA中创建的控制器 我有一个问题 – 是否有可能做下一个? 我有三个方面: _Default SiteOne SiteTwo 在每个区域内我都有一个名称相同的ApiController,但当然在不同的名称空间中: MvcAppliaction.Areas._Default.Controllers.ValuesController MvcAppliaction.Areas.SiteOne.Controllers.ValuesController MvcAppliaction.Areas.SiteTwo.Controllers.ValuesController 我还有一个当前值(我想使用)的配置区域。 如果他进入浏览器,我想将用户映射到适当区域(我可以在配置中找到)中的控制器: /api/values 例如,如果配置文件中的当前区域是SiteOne,那么此请求应该映射到MvcAppliaction.Areas.SiteOne.Controllers.ValuesController控制器,但是如果我将配置文件中的当前区域更改为_Default的SiteTwo,则应将其映射到正确的控制器。 PS。 使用MVC控制器很简单,您只需设置路线: routes.MapRoute( name: “Default”, url: “{controller}/{action}/{id}”, defaults: new { controller = “Home”, action = “Index”, id = UrlParameter.Optional }, namespaces: new[] { “MvcApplication.Web.Areas.” + SiteName + “.Controllers”) } );