2013年2月19日 星期二

ASP.NET MVC - 使用 EditorForModel 編輯資料

EditorForModel,這個用來自動產生 Model 類別編輯內容的 Html Helper 我很少用它,應該說我從來沒有用在專案裡,在 ASP.NET MVC 2 的時候就已經有了,另外還有個專門產生顯示內容的 Html Helper 是 DisplayForModel,有關詳細的介紹可以參閱「ASP.net MVC 4 網站開發美學」作者之一「星寂」在其部落格的其中一篇文章介紹「ASP.NET MVC 2.0 Html.EditorForModel & Html.DisplayForModel」。

會想寫這一篇是因為有人在論壇裡提了一個問題,而這位提問者的程式內容就有用到了 EditForModel,所以我也就來實際操作一番,看看 EditorForModel 使用與不使用有何差異,以及是不是會發生如同那位提問者所遇到的問題。


2013年2月18日 星期一

DropDownList DataAnnotation 於 MVC 3, MVC 4 的差異狀況

這篇是記錄一下在之前某一次 twMVC 週四固定聚會時有一位朋友所提出問題的解決方式,這一個問題其實不難,只因為是 MVC 3, MVC 4 兩個版本不同而造成的差異狀況,最根本的解決方式就是改用 MVC 4 來做網站,而如果無法升級為 MVC 4 的話,那就使用我的土砲方式也是可以的。

狀況:一個簡單的類別,各屬性都有標註 DataAnnotation Validation 標籤,其中一個屬性在前端會以下拉選單方式呈現,所以當前端的下拉選單沒有選值時就會顯示驗證訊息:如果把這個簡單類別包裝在一個 ViewModel 類別中,那麼在 MVC 3 專案中,這個下拉選單的驗證就會失效,而 MVC 4 專案則是完全正常。

在 ASP.NET MVC 3 環境下:

image

在 ASP.NET MVC 4 環境下:

image

接下來就來看看這是怎麼一回事。


2013年2月17日 星期日

Visual Studio 擴充套件 - ReAttach

以前曾經介紹過可以使用「附加執行緒」的方式來進行偵錯「Visual Studio 使用「附加至處理序」來進行偵錯」,這樣的好處是不必每次按下 F5 後重新從網站起始頁在翻山越嶺地到偵錯的地方,但有時候按下「Ctrl + Alt + P」快速鍵後還要去選擇所要附加的執行緒時,這個步驟就會覺得有些累贅,所以如果有一個快速的方式可以幫我們省略掉這些步驟的話,那麼可以為我們節省下不少的時間,也大大地增加開發的效率,而接下來要為各位介紹的「ReAttach」就是可以幫助我們的擴充套件。


2013年2月9日 星期六

Visual Studio 2012 擴充套件 - MultiEditing extension

昨天在 Scott Hanselman 的部落格看到他前幾天所發的一篇文章中有介紹到這一個擴充套件「MultiEdit extension」,這套件所提供的功能只要是有使用過 Sublime Text 2 的朋友應該都會很熟悉,Sublime Text 2 裡有這麼一個好用的「Simultaneous Editing」功能,可以讓我們於多個選取的字詞進行同時編輯的動作,而這麼好的功能也有人為 Visual Studio 2012 做了相同功能的擴充套件,不過只有 for VS2012 而已,VS2010 就沒有啦!


2013年2月4日 星期一

取得 Entity 類別 MetaData 所設定的 Display Name

在「ASP.NET MVC 資料分頁 MVCPaging 2.0 應用 Part.4:分頁進階處理」的文章當中,我把資料的欄位排序改以表格的標題欄位來操作,因為那一篇文章只是做個範例,所以就直接以 Entity 的 Property 名稱作為標題來顯示,而實際的應用狀況下,我們的 Entity Property 名稱並不會直接顯示在頁面上,而是會另外以 DisplayAttribute 來標註要顯示的名稱,然後頁面上就顯示這個 Display Name。

不過有個朋友就在該文章回應並且提供一個方法,讓表格的標題改用 Display Name 來顯示,看了這位朋友所提供的方法後,覺得這個方法是可以達到需求,但還可以在做些修改,讓修改後的方法不只有提供給 View 做顯示之用,在其他有需要的地方,只要呼叫這個修改後的方法就可以輕易取得 Entity 類別中某個 Property 上的 Display Name。

 


2013年2月1日 星期五

Entity Framework 5 - 取得 Entity 的 Property Names 與 KeyMembers

當專案使用 Entity Framework 4 的時候,使用我之前介紹過的方法都是可行的,例如:

取得 Entity Framework 中 Entity 的主鍵成員名稱(KeyMember)
取得 Entity Framework 中 Entity 對應 Table 的原生 Column Name

而當專案使用 Entity Framework 5 之後就會發現到這些方法全都不行了,既然都不能用了就想辦法解決,只是這次就真的像破頭了,像我都是使用 Database First 的方式來建立 Entity Model,所以當我一開始想要用之前的方法在加上反射的方式來試著找出我想要的資料時,發現到 EF5 所建立的 EDMX 已經是大大不同了,這篇文章就說明如何在使用 EF5 的情況下找出 Entity 的 Property Names 與 KeyMembers。

 


提醒

千萬不要使用 Google Talk (Hangouts) 或 Facebook 及時通訊與我聯繫、提問,因為會掉訊息甚至我是過了好幾天之後才發現到你曾經傳給我訊息過,請多多使用「詢問與建議」(在左邊,就在左邊),另外比較深入的問題討論,或是有牽涉到你實作程式碼的內容,不適合在留言板裡留言討論,請務必使用「詢問與建議」功能(可以夾帶檔案),謝謝。