小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

演練:使用區(qū)域組織 ASP.NET MVC 應(yīng)用程序

 ThinkTank_引擎 2014-05-13

MVC 模式可將應(yīng)用程序的模型(數(shù)據(jù))邏輯與其呈現(xiàn)邏輯和業(yè)務(wù)邏輯分離。 在 ASP.NET MVC 中,這種邏輯分離還在項(xiàng)目結(jié)構(gòu)中以物理方式實(shí)現(xiàn),在該項(xiàng)目結(jié)構(gòu)中,控制器和視圖保存在使用命名約定定義關(guān)系的文件夾中。 此結(jié)構(gòu)可滿足大多數(shù) Web 應(yīng)用程序的需求。

但是,一些應(yīng)用程序可能具有大量控制器,而每個(gè)控制器又可能與若干個(gè)視圖關(guān)聯(lián)。 對于這些類型的應(yīng)用程序,默認(rèn)的 ASP.NET MVC 項(xiàng)目結(jié)構(gòu)可能不實(shí)用。

為了滿足大型項(xiàng)目的需要,ASP.NET MVC 允許您將 Web 應(yīng)用程序劃分為較小單元(也稱為“區(qū)域”)。 通過使用區(qū)域,可以將大型 MVC Web 應(yīng)用程序分成較小的功能分組。 區(qū)域?qū)嶋H上是應(yīng)用程序內(nèi)部的一個(gè) MVC 結(jié)構(gòu)。 一個(gè)應(yīng)用程序可能包含若干個(gè) MVC 結(jié)構(gòu)(區(qū)域)。

例如,一個(gè)大型電子商務(wù)應(yīng)用程序可能分為若干個(gè)區(qū)域,這些區(qū)域表示店面、產(chǎn)品檢查、用戶帳戶管理和采購系統(tǒng)。 每個(gè)區(qū)域表示整個(gè)應(yīng)用程序的一個(gè)獨(dú)立功能。

本演練演示如何在 ASP.NET MVC 應(yīng)用程序中實(shí)現(xiàn)區(qū)域。 本演練創(chuàng)建一個(gè)具有以下區(qū)域的博客網(wǎng)站的功能框架:

  • 主。 這是 Web 應(yīng)用程序的入口點(diǎn)。 此區(qū)域包括登錄頁面和登錄功能。

  • 博客。 此區(qū)域用于顯示博客文章并搜索存檔。

  • 面板。 此區(qū)域用于創(chuàng)建和編輯博客文章。

為了使本課程簡單起見,這些區(qū)域不包含用于執(zhí)行博客的實(shí)際任務(wù)的邏輯。

與本主題對應(yīng)的包含源代碼的 Visual Studio 項(xiàng)目可從 Download(下載)網(wǎng)頁獲得。

在 ASP.NET MVC 區(qū)域應(yīng)用程序中,可以按照在任何 MVC 應(yīng)用程序中的做法來在一個(gè)區(qū)域內(nèi)進(jìn)行鏈接。 例如,可以調(diào)用 ActionLink 方法,或者可以調(diào)用采用控制器或操作名稱的任何其他例程(例如 RedirectToAction 方法)。

但是,若要生成到不同區(qū)域的鏈接,您必須用這些方法的 routeValues 參數(shù)顯式傳遞目標(biāo)區(qū)域名稱。 例如,下面的標(biāo)記演示了與 BlogController 類的 ShowBlog 操作方法的鏈接。 此調(diào)用不會(huì)標(biāo)識(shí)特定的區(qū)域。

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

Blog 區(qū)域中的任何地方,此鏈接都會(huì)按照預(yù)期方式發(fā)揮作用。 但是,如果將上述鏈接添加到 Dashboard 區(qū)域內(nèi)的視圖中,則該鏈接將失敗。 這是因?yàn)?ASP.NET MVC 框架在 Dashboard 區(qū)域中將無法找到 BlogController 類。

下面的示例演示了如何創(chuàng)建一個(gè)鏈接,該鏈接標(biāo)識(shí)用 routeValues 參數(shù)傳遞的匿名對象中的區(qū)域。 此處顯示的示例只作說明之用。 不要將該文件添加到項(xiàng)目中。

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

最后的 null 參數(shù)(在 Visual Basic 中為 Nothing)是必需的,這只是因?yàn)榫哂?routeValues 參數(shù)的 ActionLink 方法重載也具有 htmlAttributes 參數(shù)。 但是,若只是為了能在區(qū)域之間進(jìn)行鏈接,則無需此參數(shù)。

向主項(xiàng)目添加內(nèi)容

當(dāng)您為本演練創(chuàng)建 Visual Studio 解決方案時(shí),解決方案模板包括一個(gè)充當(dāng)應(yīng)用程序的入口點(diǎn)的主視圖。 在本節(jié)的演練中,您將向主視圖添加到鏈接到子區(qū)域的選項(xiàng)卡。 您還將添加代碼以顯示診斷信息,包括控制器的名稱、操作方法和生成當(dāng)前視圖的區(qū)域。

向主項(xiàng)目添加內(nèi)容

  1. 打開主視圖 (Views\Shared\Site.Master)。

  2. 緊接在 <asp:ContentPlaceHolder ID="MainContent" runat="server" /> 元素之后插入以下代碼。

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

    此代碼將向視圖添加診斷信息。

  3. 在相同文件中,找到 <ul id="menu"> 元素,然后用以下代碼替換整個(gè)元素:

    <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>
    
    
    

    此代碼將添加跨區(qū)域進(jìn)行鏈接的選項(xiàng)卡。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多