close
閱畢日期:2012/3/13

第七章 Action與View
Action與View就是用ViewData跟Model溝通。
有這些Helper可以用:HtmlHelper, UrlHelper, AjaxHelper,然後有TagBuilder可以用來產生任意的Tag。
PartialView也可以搭資料,在Controller建立同名的Action即可。然後可以用jQuery.load去撈,但不能用GET,這裡我不太懂,應該是都可以才對。
Html.RenderAction可以直接Render partial view,一般是用RenderPartial,差別在於RenderPartial只讀取.ascx,就沒經過controller,因此搭不到資料。用RenderAction就可以經過Controller而得到資料。

第八章 Area
ㄟ,就介紹。這邊我已經知道了,簡單說就是切資料夾去放 Views, Controllers, Model,就多出一層,像是 area/controller/action 這樣。

第九章 一些有的沒的
Action的參數可以用[Bind(Exclude="id,pw")]排除掉不用繫結的field。
可以利用Partial class來描述資料型別的驗證規則:

[Metadatatype(typeof(MemberMetadata)]
public partial class Member {
//...
private class MemberMetadata {
[DisplayName("name")][Required(ErrorMessage="")]
public string Name {get; set;}
}
}

可以用RouteTable.Routes.GetVirtualPath來產生網址。
Application有AuthenticateRequest事件可以處理登入使用者角色為何。
MvcPaging是一個開放源碼的函式庫,提供Paging helper
LINQ是lazy load的,因此使用using可能會因為using結束關閉connection而發生錯誤,但若轉為List,則不會。
[Authorize]表示Action需要驗證才能執行。
可以藉著實作ActionFilter來記錄Log(Action的Log)
最後介紹了IoC跟方便的IoC容器AutoFac。

第十章 ASP.Net MVC開發技巧
  1. 多國語系,加App_GlobalResources,建立資源檔:R1.en-us.resx, R1.zh-tw.resx...,程式裡則使用Resources.R1.xxx 來代替字串。
  2. 隱藏MVC版本:在Application_Start裡加上MvcHandler.DisableMvcResponseHandler=true
  3. Built-in View:先卸載專案檔,改.csproj裡的MvcBuildView為true,這可能會導致編譯變慢。
  4. <%: %>幾乎等同於<%= Html.Encode("") %>,Html會被encode,一定要顯示的話,可先用MvcHtmlString.Create()把字串包起來,另外可以加上MS Anti-Cross Site Script Library來額外保護需輸出HTML的資料。
  5. T4是高度自訂的文件產生器。修改CodeTemplate要先複製預設的CodeTemplate到專案目錄,在安裝路徑的ItemTemplates下。可以直接從資料夾拖到VS的專案裡,拖進去會多出.cs,這些檔案可以刪除掉。然後把.tt的「自訂工具」屬性給清除,.tt就文字檔,可以自行修改。


第十一章 佈署
有好幾種方法:
  1. IIS7 裝IIS管理服務,VS2010裡「建立發行設定」
  2. IIS7裝Web deployment tool,VS2010設定發行設定檔,差別在「服務url」
  3. 手動,VS2010在專案按滑鼠右鍵,選「封裝/發行設定」即可封裝成.zip檔案,裡面有.cmd可以幫助安裝。


第十二章 單元測試
MoQ,用了以後,可以這樣寫 mock 程式:

var mock = new <IMessageRepository>();
mock.setup(p=>p.FindAllMessages()).Returns(new List<Message>() {new Message(); }.AsQueryable());

直接就可以為IMessageRepository的FindMessage做出空的殼。

More about ASP.NET MVC 2 開發實戰


arrow
arrow

    elleryq 發表在 痞客邦 留言(0) 人氣()