Asp.net mvc 3 ASP.NET MVC在发送到视图之前更改模型数据类型

Asp.net mvc 3 ASP.NET MVC在发送到视图之前更改模型数据类型,asp.net-mvc-3,linq-to-entities,Asp.net Mvc 3,Linq To Entities,我使用Linq转换实体,从数据库中获取模型 var works=db.Work.Where(a=>a.StartDate==DateTime.Now.ToList(); 此模型包含一个日期时间,我希望在将其发送到视图之前将其更改为字符串 因为需要把它表现为一个永恒的时间, 像这样: foreach (var item in workslist) { item.StartDate = "1391/01/01"; //

我使用Linq转换实体,从数据库中获取模型

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);

那么,在强类型模型中有没有办法更改数据类型呢?或者除了在my DB中将DateTime另存为字符串之外的其他方法,您可以在控制器中使用函数将DateTime更改为字符串

public string changeDateTimeToPersianString ( DateTime time)
    {
// your code
}
然后可以从视图中调用此函数

像这样的

@changeDateTimeToPersianString(workslistitem.StartDate)

您可以将[DisplayFormat]属性与EditorFor/DisplayFor helpers一起使用来格式化数据

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

@Html.EditorFor(m => m.StartDate)
<>或者,您也可以考虑为您的“工作”域模型定义单独的VIEW模型。尽管这种方法产生了更多的代码,但它提供了更多的灵活性,被认为是良好的实践。 以下是示例代码:

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);
var works=db.Work.Where(a=>a.StartDate==DateTime.Now.ToList();
var workViewModels=新列表(works.Count);
foreach(var在建工程)
添加(WorkViewModel.Map(work));
返回视图(workViewModels);