2010-09-21 22 views
0

我正在ASP.NET MVC 2中開發一個具有服務和存儲庫層的Web項目。 我正在使用實體框架。ASP.NET MVC數據處理所需的幫助

我有兩個生成的EF類。即公司和用戶。 公司有兩個字段CompanyID {int}和CompanyName {string}。 用戶有三個字段UserID {int},UserName {字符串},BirthMonth {smallint,可以爲空}和CompanyID {int,這是公司的外鍵}

我有一個顯示UserName,Month和公司名。此外,同樣的觀點應該包括另一個模型,即消息(MessageTitle,RecievedDate,ReceivedFrom)我想查看BirthMonths作爲月份名稱(1月,2月等)

我被困在轉換短?以數字以外的名字(即一月份,二月份)來縮短和顯示月份。

回答

0

試試這個(我沒有測試它,但在幾次網絡搜索中發現類似)。

string month = String.Empty; 
if(BirthMonth.HasValue) 
{ 
    DateTime date = new DateTime(1,(int)BirthMonth.Value,1); 
    month = date.ToString("MMMM"); 
} 
else 
{ 
    // month = some default value here; 
} 

修改添加: 要轉換短?具體來說就是:

short myShort = BirthMonth.HasValue ? BirthMonth.Value : 0; 
+0

在哪裏把這些公約?在存儲庫功能或服務層?我認爲他們應該在服務層,因爲他們在業務邏輯中。但是如果我把它們放在服務層中,那麼我將不得不聲明兩種不同的模型,並遍歷一個集合,進行卷積並獲得預期的集合。 – 2010-09-21 19:49:07

+0

也許在一個單獨的程序集中創建一個擴展方法,然後引用它。http://msdn.microsoft.com/en-us/library/bb383977.aspx – 2010-09-21 21:22:28

0

短嗎?可以使用GetValueOrDefault()完成縮短;獲取不可爲空的表單,並獲取月份名稱,編寫一個快速轉換器將該數字轉換爲月份名稱... DateTime.ToString中可能有某些內容也會給您。

+0

在哪裏可以放置這些約定?在存儲庫功能或服務層?我認爲他們應該在服務層,因爲他們在業務邏輯中。但是如果我把它們放在服務層中,那麼我將不得不聲明兩種不同的模型,並遍歷一個集合,進行卷積並獲得預期的集合。 – 2010-09-21 20:03:06

+0

將它們放入共享庫中,因爲我們正在談論較低級別的幫助器方法,而不是企業範圍的功能。你可以去擴展方法路由,或者根據你的需要創建一個靜態類。再加上這些可能超越商業;他們可能是爲了您的業務對象,但在一定程度上,他們會在表示層中有所幫助。其中一些事實上看起來更像是表現層類型問題。 – 2010-09-22 12:08:30