标签: asp.net-mvc-areas

ASP.NET MVC4所有领域的列表

我有一个ASP.NET MVC4应用程序,我在其中创建多个区域,有没有一种方法可以通过编程方式找出存在的区域数量及其名称.

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

18
推荐指数
1
解决办法
3933
查看次数

ASP.NET MVC 4单独项目中的区域不起作用(查看未找到)

我尝试使用单独项目中的区域创建简单的概念验证ASP.NET MVC 4网站.

我尝试按照教程:http://bob.archer.net/content/aspnet-mvc3-areas-separate-projects(应用程序在虚拟目录中不起作用......我使用IIS).我希望有比虚拟目录更好的方法.

然后我尝试了这个教程:http: //forums.asp.net/t/1483660.aspx/1但是在区域项目的*.csproj中没有"AreasManifestDir"元素(并且得到错误"视图'索引'或其未找到master或视图引擎没有支持搜索的位置")

ASP.NET中是否仍然支持MVC 4?因为我发现这个答案可以在将来删除: 作为单个项目实现的区域与asp.net mvc中的多个项目有什么优缺点

我还没有找到任何关于MVC4的方法.

解决方案的结构很简单:

Solution 'MvcAreasMultiProject'
    Areas [Directory]
        Admin [Project]
        Models
        Views
        Controllers
        Routes.cs [Examples]
    MvcAreasMultiProject [MainProject]
        - References Admin project
        M.V.C
Run Code Online (Sandbox Code Playgroud)

Admin项目的Routes.cs:

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

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "Admin_Default",
            "Admin/{action}/{id}",
            new { controller = "Admin", action = "Index", id = "" },
            new[] { …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc-areas asp.net-mvc-4 asp.net-4.5

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

ASP.NET Core RC2区域未发布

所以我刚刚更新了我的应用程序以使用ASP.NET Core RC2.我使用Visual Studio发布它并注意到我的区域未发布:

此快照来自src\MyProject\bin\Release\PublishOutput:

在此输入图像描述

这是我Admin在Visual Studio中命名的区域:

在此输入图像描述

我错过了一步还是什么?

c# asp.net-mvc-areas asp.net-core .net-core-rc2

16
推荐指数
1
解决办法
2359
查看次数

ASP.NET MVC领域:如何在URL中隐藏"区域"名称?

运行具有博客区域和博客控制器的MVC 2区域示例时,URL如下所示:

http:// localhost:50526/Blog/Blog/ShowRecent格式:

RootUrl/AreaName/ControllerName/ActionName

刚刚发现了MVC区域,它似乎是一种组织代码的好方法,即为每个部分创建一个区域,在我的例子中每个区域都有自己的控制器.这意味着每个AreaName = ControllerName.这样做的结果是Url中的双AreaName/ControllerName路径,例如/ Blog/Blog /上面

没有完全清楚地了解路由,我如何设置路由以不显示AreaName?

编辑:

我试图减少路由的工作量,因为这些似乎相互影响(即需要特定的排序)并可能导致严重的头痛:-)在将现有的webform应用程序转换为MVC时,我已经转换了几个核心部分,它们各有一个Controller和相当数量的View/Actions,虽然大部分数据访问都是在程序集中,但Model/ViewData类的数量正在增长......我目前正在根模型/视图中创建子文件夹这些部分(或区域)的文件夹,并希望创建区域将以相同的方式工作,除了组织代码(使用覆盖区域的基本路线)任何评论?

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

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

MVC3领域的相对内容路径

我发现这个问题不能使用ASP.NET MVC 2中的区域的相对路径,这与我遇到的问题相同.在MVC3中仍然如此吗?

有没有办法将内容文件保存在相对于该区域的区域中?

这样一个区域中的布局文件可以有类似的东西

无需创建完全限定的链接,需要区域目录和区域名称或上述问题的解决方案,这需要检查每个请求的每个区域.

更新/编辑

我决定使用上面问题中的解决方案和下面的解决方案(html帮助程序) - 取决于项目/情况.我上面的实现使用app.setting来存储区域名称和扩展名,这样我就可以将模块作为我的库的一部分.

var context = HttpContext.Current;
var path = context.Request.Path;
var list = ...       //code that gets from app.config and then saves it
var extensions = ... // to the cache as non-removable with a dependency on web.config
foreach (var area in list)
{
   if (!path.Contains(area + "/")) continue;
   foreach (var extension in extensions)
   {
      if (path.EndsWith("." + extension))
      {
         context.RewritePath(path.Replace(area + "/", "Areas/" + area + "/"));
      }

    } …
Run Code Online (Sandbox Code Playgroud)

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

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

区域内的mvc5属性路由找不到视图

当我在Admin区域内并使用属性路由映射我的路线时,它找不到视图,因为它不会查看实际区域视图文件夹,而只查看全局视图文件夹.

只有当我通过完整路径查看它然后才能显示它,否则它会抛出我的错误.

错误

The view 'Authorize' or its master was not found or no view engine supports the searched locations. The following locations were searched:
~/Views/Home/Authorize.aspx
~/Views/Home/Authorize.ascx
~/Views/Shared/Authorize.aspx
~/Views/Shared/Authorize.ascx
~/Views/Home/Authorize.cshtml
~/Views/Home/Authorize.vbhtml
~/Views/Shared/Authorize.cshtml
~/Views/Shared/Authorize.vbhtml
Run Code Online (Sandbox Code Playgroud)

[RoutePrefix("admin")]
public class HomeController : Controller
{

    [Route]
    public ActionResult Index()
    {
        return View("Authorize"); // Error
        return View("~/Areas/Admin/Views/Home/Authorize.cshtml"); // Working
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,如果我禁用属性路由并切换回旧的路由,它将起作用.有什么方法可以解决这个问题,或者它是按照预期的方式工作的,我应该在所有方面应用完整的路径?

c# asp.net-mvc asp.net-mvc-areas attributerouting asp.net-mvc-5

15
推荐指数
1
解决办法
6565
查看次数

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

如何从我的某个区域链接到我的一个根控制器?

<% Html.RenderAction("Action", "Page", new {area = "root", name = "Admin"}); %>
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误:

路由表中的路由与提供的值不匹配.

我有一个控制器命名在我的根控制器集合中命名Page的文件夹Admin中.我可以通过键入\ Admin\Page来访问此控制器.

这是我注册路线的方式:

        routes.MapRoute(
            "Admin",
            "Admin/{controller}/{action}/{id}",
            new { controller = "Admin", action = "Index", id = "" }
        );
Run Code Online (Sandbox Code Playgroud)

我希望我可以在我的视图中使用此语法来解决"Admin"路由,但这不起作用.关于如何修复它的任何想法?

c# asp.net-mvc asp.net-mvc-routing asp.net-mvc-areas asp.net-mvc-2

14
推荐指数
1
解决办法
7182
查看次数

如何指定默认区域而不向每个ActionLink添加区域=""

我有一个基于ASP.NET MVC2 RC2构建的大型现有应用程序.

我的所有链接都是这样的:htp // site/controller/action/id

我刚刚添加了一个名为:BigBird的区域.

现在,当我在BigBird区域时,我的所有链接都是这样的:htp:// site/BigBird/controller/action/id

问题是我的新区域中没有这些控制器/操作.因此,我必须遍历我的应用程序中的所有actionlinks并将此routevalue:area = string.empty

有没有办法解决?

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

14
推荐指数
1
解决办法
4750
查看次数

MVC区域 - 未找到视图

我有一个使用MVC区域的项目.该区域包含整个项目,而区域外的主"视图/控制器/模型"文件夹为空,禁止我设置的调度控制器将默认传入请求路由到我所在区域的Home Controller.

该控制器有如下方法: -

public ActionResult Index(string id)
    {
        return RedirectToAction("Index", "Home", new {area = "xyz"});
    }   
Run Code Online (Sandbox Code Playgroud)

我也有一个默认的路由设置来使用这个控制器如下: -

routes.MapRoute(
            "Default",                                              // Default route
            "{controller}/{action}/{id}",
            new { controller = "Dispatch", action = "Index", id = UrlParameter.Optional }
        );   
Run Code Online (Sandbox Code Playgroud)

对我的站点的任何默认请求都适当地路由到相关区域.Area的"RegisterArea"方法只有一条路线: -

context.MapRoute(
            "xyz_default",
            "xyz/{controller}/{action}/{id}",
            new { action = "Index", id = UrlParameter.Optional }
Run Code Online (Sandbox Code Playgroud)

我的区域有多个控制器,有很多视图.在这些控制器方法中对特定视图的任何调用,如"返回视图("blah");呈现正确的视图.但是,每当我尝试返回视图以及作为参数传入的模型对象时,我会收到以下错误: -

Server Error in '/DeveloperPortal' Application.
The view 'blah' or its master was not found. The following locations were searched:
~/Views/Profile/blah.aspx
~/Views/Profile/blah.ascx
~/Views/Shared/blah.aspx
~/Views/Shared/blah.ascx 
Run Code Online (Sandbox Code Playgroud)

每当模型对象作为参数传入时,它看起来都像.到"View()"方法[例如返回View("blah",obj)]它在项目的根目录中而不是在区域特定的视图文件夹中搜索视图.

我在这里错过了什么?

提前致谢.

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

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

MVC企业领域 - 好还是坏?

在单个项目解决方案中,当您拥有大量控制器时引入区域确实可以改善分离,并允许模块轻松地复制到解决方案中或从解决方案中复制出来.但是,在大型企业解决方案中,我倾向于将逻辑拆分为单独的项目.

因此具有单独的UI,Controller,SOA,Model和Repository项目.在这种情况下,区域不再有意义了,而且它们为Url添加了额外的顶层,这通常是不需要的,但我相信如果你保持控制器的独特性,你可以省略Url中的区域,但不是有点臭吗?

区域可能适用于中等复杂度的站点,或者模块代码更好地保存在一个位置,因此可以将其复制到其他站点或删除.

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

14
推荐指数
1
解决办法
3474
查看次数