2012-04-14 19 views
0

我使用LINQ到實體,取模型從DBASP.NET MVC之前變化模型數據類型發送到瀏覽

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

這個模型包含了我想要發送之前將其更改爲字符串,一個DateTime它來查看 beacuase需要將其顯示爲一個persianDate時間, 這樣的:

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

那麼,有沒有辦法改變的強類型模型中的數據類型?或者其他的方式來做到這一點,除了保存日期時間爲字符串在我的DB

回答

0

您可以使用EditorFor/DisplayFor傭工[DisplayFormat]屬性格式化數據。

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

然後在視圖:

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

或者,你也可以考慮單獨定義視圖模型爲你「工作」的域模型。雖然這種方法導致了更多的代碼,但它提供了更多的靈活性並被視爲良好的實踐。 下面是示例代碼:

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

,你可以在你的控制器的功能,以日期時間更改爲字符串

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

,那麼你可以打電話從您查看此函數。

在剃刀

像這樣

@changeDateTimeToPersianString(workslistitem.StartDate)