MVC 模式可将应用程序的模型(数据)逻辑与其呈现逻辑和业务逻辑分离。 此结构可满足大多数 Web 应用程序的需求。

对于这些类型的应用程序,默认的 ASP.NET MVC 项目结构可能不实用。

一个应用程序可能包含若干个 MVC 结构(区域)。

每个区域表示整个应用程序的一个独立功能。

本演练创建一个具有以下区域的博客网站的功能框架:

  • 此区域包括登录页面和登录功能。

  • 此区域用于显示博客文章并搜索存档。

  • 此区域用于创建和编辑博客文章。

为了使本课程简单起见,这些区域不包含用于执行博客的实际任务的逻辑。

创建应用程序结构

若要开始,您将创建一个 ASP.NET MVC 项目,并为两个子区域(博客和面板)添加文件夹结构。

创建应用程序结构

  1. “新建项目”。

  2. “Web”节点。

  3. “ASP.NET MVC 2 Web 应用程序”。

  4. “创建解决方案的目录”复选框。

  5. “确定”。

  6. “区域”。

  7. “添加”。

    “区域”文件夹包含一个文件夹结构,其中允许每个子区域具有自己的模型、视图和控制器。

  8. “区域”。

  9. “添加”。

    完成此操作后,“区域”文件夹将包含两个子文件夹(“Blog”和“Dashboard”)。

注册区域路由

若要注册区域的路由,请在 Global.asax 文件中添加到可自动在 AreaRegistration 文件中查找区域路由的代码。

注册区域路由

  1. “解决方案资源管理器”中,打开项目的 Global.asax 文件。

  2. Application_Start 方法中插入以下代码:

     
    AreaRegistration.RegisterAllAreas();

    此代码为每个子区域调用路由注册方法。

在区域之间进行连接

RedirectToAction 方法)。

此调用不会标识特定的区域。

<%= Html.ActionLink("Show Blog", "ShowBlog", "Blog") %>

 

BlogController 类。

不要将该文件添加到项目中。

<%= Html.ActionLink("Show Blog", "ShowBlog", "Blog", new { area = "blog" }, null) %>

 

Razor视图语法:
    <p>
        @Html.ActionLink("Blog首页", "BlogIndex", "Blog")
    </p>
    <p>
        @*连接到指定区域的controller*@
        @Html.ActionLink("Blog首页带参数", "BlogIndex", "Blog", new { number = 100 }, null)
    </p>
    <p>
        @*连接到指定区域的controller下的action*@
        @Html.ActionLink("Blog展示页面", "Show", "BlogIndex", new { area = "Blog" }, null)
    </p>

注意

但是,若只是为了能在区域之间进行链接,则无需此参数。

向主项目添加内容

您还将添加代码以显示诊断信息,包括控制器的名称、操作方法和生成当前视图的区域。

向主项目添加内容

  1. 打开主视图 (Views\Shared\Site.Master)。

  2. <p>
        Controller: <%= ViewContext.RouteData.Values["controller"] %><br />
        Action: <%= ViewContext.RouteData.Values["action"] %><br />
        Area: <%= ViewContext.RouteData.DataTokens["area"] %>
    </p>

    此代码将向视图添加诊断信息。

  3. <ul id="menu">              
        <li><%= Html.ActionLink("Home", "Index", "Home", new { area = "" }, null)%></li>
        <li><%= Html.ActionLink("Blog", "ShowRecent", "Blog", new { area = "blog" }, null)%></li>
        <li><%= Html.ActionLink("Dashboard", "AddPost", "Dashboard", new { area = "dashboard" }, null)%></li>
        <li><%= Html.ActionLink("About", "About", "Home", new { area = "" }, null)%></li>
    </ul>

    此代码将添加跨区域进行链接的选项卡。

 

 

 

 

 

 

 

相关文章: