Всем привет. У меня такой вопрос. Я добавил enum в модель Task.cs и теперь вываливается ошибка "Constraint exception was unhandled by user code" в Index.cshtml в строчке @foreach (var t in Model).
public class Task
{
public int Id { get; set; }
public string Title { get; set; }
public string Author { get; set; }
public string Description { get; set; }
[Range(1, int.MaxValue, ErrorMessage = "Select a correct license")]
public TaskStatus TaskStatus { get; set; }
}
enum TaskStatus
public enum TaskStatus
{
[Display(Name = "New")]
New,
[Display(Name = "Closed")]
Closed,
[Display(Name = "InProcess")]
Process,
[Display(Name = "Need Confirm")]
NeedConfirm
}
Index.cshtml
@foreach (var t in Model)
{
<tr class="task-row-link" title="Edit" data-link="@Url.Action("Edit", new { id=t.Id})">
<td class="centered"><p>@t.Id</p></td>
<td class="centered"><p>@t.Title</p></td>
<td class="centered"><p>@t.TaskStatus</p></td>
<td class="centered"><p>@t.Author</p></td>
<td class="centered"><p>@t.Description</p></td>
<td class="centered">
<p>
<a href="/Home/Delete/@t.Id">Delete</a>
</tr>
}
Если Вы объявляете перечисление следующим образом:
public enum TaskStatus
{
[Display(Name = "New")]
New,
[Display(Name = "Closed")]
Closed,
[Display(Name = "InProcess")]
Process,
[Display(Name = "Need Confirm")]
NeedConfirm
}
то значениями по умолчанию будет нумерация начиная с нуля (0, 1, 2, 3).
В Вашей модели Вы устанавливаете диапазон начиная с единицы:
[Range(1, int.MaxValue, ErrorMessage = "Select a correct license")]
public TaskStatus TaskStatus { get; set; }
Либо измените диапазон, либо задайте числовые значения для перечисления с единицы.
А еще проверьте, что Вы не используете случайно:
System.Threading.Tasks.TaskStatus
Также, перед использованием foreach
делайте проверку, чтобы не падало исключение:
@if (Model != null)
{
foreach (var t in Model) // Model - должна быть коллекцией
{
...
}
}
Зайдите в контроллер, поставьте брэйкпоинт перед переходом на страницу и посмотрите, что Вы передаете в качестве модели, все ли заполнено.
Пожалуй, самым обязательным условием работы кода является то, что для того, чтобы работала строка @foreach (var t in Model)
необходимо, чтобы модель (Model
) - была коллекцией.
Также необходимо контролировать типы данных. Если в модели прописать определенный тип данных, то и в базе данных должен быть соответствующий. Иными словами, если в модели используется перечисление TaskStatus
приводимое к int
, то в базе данных должен быть тип int
, но не varchar
.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Я использую FormattedText класс чтобы рисовать текст наподобие:
Всем привет! В общем нужно вытянуть значение из (div class="yt-lockup yt-lockup-tile yt-lockup-video clearfix" data-context-item-id="Aj0F3D_XDm0" data-visibility- tracking="CEEQ3DAYAyITCMTl0sOg-tICFUfMHQodzD4EnCj0JEDtnNz-w7vBngI=")
Пытаюсь сделать проверку на совпадения в БДПривожу к единому виду переменную для проверки -