中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET MVC 2中的Area特性是什么

發布時間:2021-12-06 15:47:45 來源:億速云 閱讀:165 作者:iii 欄目:編程語言

這篇文章主要講解了“ASP.NET MVC 2中的Area特性是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“ASP.NET MVC 2中的Area特性是什么”吧!

沒有Areas前相同問題的處理

在mvc1.0時代,如果要將網站按目錄結構來區分。例如

Website/Index  Admin/ Index  User/ Index  ……/……

通常都是在Views下面建立若干個和Controller相對應的目錄,然后在里面放置aspx頁面

Views\Website\Index  Views\Admin\Index  Views\User\Index  Views\.......\.......

這樣建立若干個目錄

其實這樣也沒什么不好,***不好的可能就是隨著業務的需要,結構需求會越來越多,views目錄下面的文件夾越來越多,更或者你需要更細結構的頁面路徑,例如:

Website/Product/Index  Website/Catalog/Index  Website/Contect/Index

當然,你可以用UrlRouteing或者ViewEngine搞定這些問題。但是毫無疑問,隨著網站的運行日久,同一個Controller目錄下的文件會越來越多,對于同一個Controller下的ActionResult的命名和UrlRouting里面的維護帶來不小的麻煩。給管理帶來不方便【個人理解】。

現在出Areas之后,這個問題有所緩解。還是如上的Url

Website\Product\Index  Website\Catalog\Index  Website\Order\Index  Website\Contact\Index

可以使用mvc2.0新增的Area來解決這個問題

建立項目

首先,用mvc2建立一個新項目,在網站根目錄下建立Areas文件夾,在Areas文件夾建立你要區分的目錄,例如本例的Website,然后繼續在Website目錄下增加Views目錄,繼續在views目錄下增加需要分類管理Controller目錄和建立aspx文件。使文件結構形成

Areas\Website\Views\Product  Areas\Website\Views\ Catalog  Areas\Website\Views\ Order  Areas\Website\Views\ Contact

ASP.NET MVC 2中的Area特性是什么

到原有默認的views目錄將web.config復制到現在的新的views目錄,你甚至現在可以把原有的views目錄刪除掉

建立Areas區域UrlRouting

隨便找個地方,建立一個新的類,繼承AreaRegistration實現抽象類

修改Global.sas

protected void Application_Start()          {  AreaRegistration.RegisterAllAreas();  //注冊區域Url規則,注意先后順序  RegisterRoutes(RouteTable.Routes);          }

為區域頁面建立Controller類

為區域頁面建立Controller類沒什么區別,可以建立在另外一個外部類庫項目上,***需要注意的就是命名空間需要和注冊Area規則的類的命名空間的前導一致。我們知道,在不使用Areas的時候Controller是不受namespace約束的。也就是說只要你有一個Controller名,而不管他在哪個命名空間下都是可以起作用的,如果我們在不同的命名空間建立2個相同的Controller類名,編譯的時候不會出錯,但是運行mvc網站的時候會提示存在2個相同的Controller類,系統不知道使用哪個。但是Areas卻有所限制,他一定要命名空間的前導和AreaRegistration類得命名空間相同。例如:我建立的AreaRegistration網站項目命名空間為Valor.Asmyna.Areas.Website然后我將Controller分開作為一個獨立的類庫,如果我隨便寫一個命名空間空間,這個Controller對于Area里面的views是不起作用的,但是他卻對原始Views目錄的Controller起作用,只有將他的命名空間設置成Valor.Asmyna.Areas.Website.xxx.xxx的前導才起作用

namespace Valor.Asmyna.Areas.Website   {       public class HomeController : Controller       {   public ActionResult Index()          {              ViewData["title"] = "Website/Home/Index";              return View();          }      }  public class ProductController : Controller      {          public ActionResult Index()          {  ViewData["title"] = "Website/Product/Index";  return View();       }      }  public class ContentController : Controller      {          public ActionResult Index()          {    ViewData["title"] = "Website/Content/Index";      return View();          }   }  }

Ok,到瀏覽器測試一下看看

Area結構完全一致會出現的問題

我們繼續在Area目錄下增加一個Home目錄,在他的Veiws目錄下也增加三個相同的controller目錄

ASP.NET MVC 2中的Area特性是什么

直接在剛才注冊Website AreaRegistration命名空間為他注冊一個Area規則,用默認系默認的Controller為Home.,

對2個路徑進行訪問:

/Website/Product

/Home/Product

這個時候controller對于這2個area目錄的views都能起作用。在頁面打印得到的結果一致

ASP.NET MVC 2中的Area特性是什么

顯然這樣是不對的.由此我們剛才想到Area的Controller的選擇名命名空間限制問題。那我們他們分開來注冊看看。修改Home區域的AreaRegistration的命名空間和在為HomeArea建立一個Controller類,使他們的命名空間一致。這次我們用Valor.Asmyna.Areas.Website

namespace Valor.Asmyna.Areas.Home{     public class HomeController : Controller      {         public ActionResult Index()          {              ViewData["title"] = "Home/Content/Index";              return View();          }   }  public class ProductController : Controller      {          public ActionResult Index()          {              ViewData["title"] = "Home/Content/Index";              return View();          }}      public class ContentController : Controller      {          public ActionResult Index()          {              ViewData["title"] = "Home/Content/Index";              return View();          }      }}  namespace Valor.Asmyna.Areas.Home  {      public class HomeController : Controller      {          public ActionResult Index()          {              ViewData["title"] = "Home/Home/Index";              return View();          }   }  public class ProductController : Controller{         public ActionResult Index()          {              ViewData["title"] = "Home/Product/Index";              return View();          }    }      public class ContentController : Controller      {          public ActionResult Index()          {              ViewData["title"] = "Home/Content/Index";              return View();          }      }  }

編譯之后訪問,各自分別為自己的Controller處理了

Home/Product

ASP.NET MVC 2中的Area特性是什么

Website/Product

ASP.NET MVC 2中的Area特性是什么

感謝各位的閱讀,以上就是“ASP.NET MVC 2中的Area特性是什么”的內容了,經過本文的學習后,相信大家對ASP.NET MVC 2中的Area特性是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

盐山县| 清新县| 塔城市| 南康市| 百色市| 定远县| 海兴县| 澳门| 莒南县| 同江市| 徐汇区| 大理市| 洛宁县| 呼图壁县| 许昌县| 曲松县| 沙河市| 曲阜市| 泽库县| 延吉市| 鄢陵县| 双鸭山市| 潜江市| 双牌县| 荔浦县| 柘城县| 铜梁县| 嘉禾县| 常州市| 乌拉特前旗| 三河市| 托克逊县| 祁连县| 丹江口市| 霍州市| 连南| 诏安县| 长汀县| 五峰| 闽侯县| 广南县|