剃刀模型项Int至DayofWeek

时间:2018-06-23 23:25:31

标签: asp.net asp.net-mvc razor

我正在Asp.net Core 2.1(EF,MVC,SQL Server)中做一个项目,只是尝试将byte(即tinyint)(例如1)转换为等效的星期几名称(例如星期一)在我看来。默认的脚手架如下所示(DayId是从0到6的字节,在我的模型中只不过是{public byte DayId {get; set;}):

@Html.DisplayFor(modelItem => item.DayId)

基于其他SO问题,我尝试这样做:

@Html.DisplayFor(modelItem => Enum.GetName(typeof(DayOfWeek),item.DayId))

此:

@Html.DisplayFor(modelItem => Enum.GetName(typeof(DayOfWeek), Convert.ToInt32(item.DayId))))

显然是Intellisense不赞成的事情:

@Html.DisplayFor(modelItem => item.DayId.DayofWeek)

我主要是在黑暗中射击。是否有捷径可寻?应该在控制器还是模型中完成?

我认为这将是一个简单的转换,并且可以保存一个sql join,但是在这一点上并不容易。仅返回其中有七行的联接表会更好吗?谢谢。

1 个答案:

答案 0 :(得分:0)

如果您希望您的媒体资源表示enum的{​​{1}}值,那么您的媒体资源应为DayOfWeek,而不是DayOfWeek,这为您带来了强类型输入的好处

int

然后在视图中可以使用

public DayOfWeek DayId { get; set; } // perhaps Day or DayOfWeek would be a better nane

或者只是

@Html.DisplayFor(modelItem => item.DayId)

因为在这种情况下,使用@item.DayId 并不需要额外的开销(尽管很小)。