2012-04-14 15 views
0

私はエンティティへのLINQを使用を表示するために送って、用DBASP.NET MVC変更モデルデータ型

var works = db.Work.Where(a => a.StartDate == DateTime.Now).ToList(); 

からモデルをフェッチこのモデル私は、送信する前にそれを文字列に変更したい日時を含み

foreach (var item in workslist) 
       { 
        item.StartDate = "1391/01/01"; //Just For Exapmle as you know this won't work 
       } 
return View(workslist); 

だから、強く型付けされたモデルでのデータ型を変更するにはどのような方法があります:それはpersianDate時間、このような として、それを表示する必要が beacuaseを表示するには?私のDBにStringとしてDateTimeの保存を除き、これを行うための、または他の方法は、文字列

public string changeDateTimeToPersianString (DateTime time) 
    { 
// your code 
} 

に日時を変更するには、コントローラに機能を持たせることができる

答えて

0

よう

カミソリで何かあなたがデータをフォーマットする[displayFormatに] EditorFor/DisplayForヘルパーと属性を使用することができます。

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy/mm/dd}")] 
public DateTime StartDate { get; set; } 
ビューで次に

@Html.EditorFor(m => m.StartDate) 

をOR、あなたもあなたの '仕事' ドメインモデルに対して個別のViewModelを定義するために考えることができます。このアプローチはより多くのコードをもたらしますが、柔軟性を高め、優れたプラクティスとみなしています。

public class Work 
{ 
    public DateTime StartDate {get;set;} 
} 

public class WorkViewModel 
{ 
    public WorkViewModel() 
    { 
    } 

    public string StartDate { get; set; } 

    public static WorkViewModel Map(Work domainModel) 
    { 
     return new WorkViewModel() { 
      //Apply your Date format logic 
      StartDate = domainModel.StartDate.ToString("yyyy/MM/dd") 
     }; 
    } 
} 

動作方法において:

var works = db.Work.Where(a => a.StartDate == DateTime.Now).ToList(); 
var workViewModels = new List<WorkViewModel>(works.Count); 
foreach (var work in works) 
    workViewModels.Add(WorkViewModel.Map(work)); 

return View(workViewModels); 
ここではサンプルコードであります
0

あなたはあなたのビューからこの関数を呼び出すことができます。この

@changeDateTimeToPersianString(workslistitem.StartDate) 
関連する問題