MVC - 常用方法

  • 5163
  • 0
  • 2017-09-07

此篇記錄在MVC中常用的方法。

好站推薦 :

[Asp.net MVC] TempData、ViewData、ViewBag

ASP.NET MVC類別的文章整理


 

View && Controller 中傳送資料使用要點 : 


.ASP MVC 提供了三種模式可供 Controller 儲存任何物件的技術給View : 
  • ViewBag["Name"] = ob; 等同 ViewBag.Name = ob;
  • ViewData["Name"] = ob;
  • TempData["Name"] = ob;
ViewBag ViewData 只在當前 Action 中有效,生命週期和 View 相同
TempData 的生命週期為一次的請求,並且每個元素至多只能被訪問一次,訪問以後自動被刪除
那View要如何使用呢?? 
 @{
        ViewBag["Name"]...;
        ViewBag.Name....;
        TempData["Name"]...;
    }

Respository Patten 資料倉儲模式 : 

這個設計模式很適合用於 MVC 中的 Controller 與 ORM 之間。降低耦合性 && 重複的程式碼。

要點 :

  • 介面應只有最基本的 新、刪、修、讀 的方法。且使用泛行已達到通用目的
  • 介面應繼承 IDisposable 的介面規範實作釋放資源的方法
  • 該實作通用類別應也使用泛型

有了通用的主體架構後,因為每個資料的類別不可能都是只有這基本的 新、刪、修、讀,那若有個類別有需要特別的 讀 該怎麼做呢?? 為了達到單一職責的約束。

  • 應建立 Model資料類別 對應的介面 且繼承通用介面後裡面規範著特殊的 讀 方法。
  • 實作該介面的類別應繼承通用類別後,實作特殊的 讀 方法。

建立EntityFrameWork的連線字串 : 

    static private string buildConnectString()
    {
    SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
    builder.DataSource = @".\SQLEXPRESS";
    builder.ApplicationName = "";
    builder.InitialCatalog = "AdventureWorksLT";
    builder.IntegratedSecurity = true;
    builder.PersistSecurityInfo = true;

    EntityConnectionStringBuilder entBuilder = new EntityConnectionStringBuilder();
    entBuilder.Provider = "System.Data.SqlClient";
    entBuilder.ProviderConnectionString = builder.ConnectionString;
    entBuilder.Metadata = @"res://AdventureWorksLT.Model/AdventureWorksLT.csdl|res://AdventureWorksLT.Model/AdventureWorksLT.ssdl|res://AdventureWorksLT.Model/AdventureWorksLT.msl";

    return entBuilder.ConnectionString;
    }

依據使用者當前請求建立出相對Url : 

// 使用 UriBuilder 類別 對當前要求的網址 當成是基底網址後 再增加一個 路徑 與 參數
// 此種方法是使用相對路徑若未來路徑改變 並不會影響信件中的網址找不到家
// 此法需在Conrtoller中因為需使用 Request.Url MVC中所提供的方法屬性
var auth_url = new UriBuilder(Request.Url) { //當前網址 Request.Url
    Path = Url.Action("ValidateRegister", new { id = member.AuthCode }),
    Query = ""
};

 

 


多多指教!! 歡迎交流!!

你不知道自己不知道,那你會以為你知道