Бритвенная модельItem Int на DayofWeek - PullRequest
0 голосов
/ 24 июня 2018

Я делаю проект в 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, но сейчас это не так просто. Было бы лучше вернуться к моей таблице соединений с семью строками в ней? Спасибо.

1 Ответ

0 голосов
/ 25 июня 2018

Если вы хотите, чтобы ваша собственность представляла значение enum для DayOfWeek, тогда ваша собственность должна быть DayOfWeek, а не int, что дает вам преимущество строгой типизации

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

Тогда в представлении вы можете использовать

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

или просто

@item.DayId

, так как нет реальной необходимости в дополнительных издержках (хотя и незначительных) использования DisplayFor() в этом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...