View && Controller 中傳送資料使用要點 :
.ASP MVC 提供了三種模式可供 Controller 儲存任何物件的技術給View :
- ViewBag["Name"] = ob; 等同 ViewBag.Name = ob;
- ViewData["Name"] = ob;
- TempData["Name"] = ob;
ViewBag ViewData 只在當前 Action 中有效,生命週期和 View 相同
TempData 的生命週期為一次的請求,並且每個元素至多只能被訪問一次,訪問以後自動被刪除
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 = ""
};
多多指教!! 歡迎交流!!
你不知道自己不知道,那你會以為你知道