Как я могу вставить нулевое значение в свойство enullable enum, используя список выбора в представлении? - PullRequest
0 голосов
/ 04 февраля 2019

Я установил свойство enum как обнуляемое в моей модели, но когда я отправляю свою форму создания, я получаю 'Значение' Выбор 'недопустимо для productColor.'

Моя модель:

  public class product
    {
        public int productId { get; set; }
        public string productName { get; set; }
        public color? productColor { get; set; }
    }

    public enum color
    {
        Red, Green, Blue
    }

My Create View:

            <div class="form-group">
                <label asp-for="productColor" class="control-label"></label>
                <select asp-for="productColor" asp-items="@Html.GetEnumSelectList<color>()" class="form-control">
                 <option>Select</option>
                </select>
                <span asp-validation-for="productColor" class="text-danger"></span>
            </div>

My Controller:

public async Task<IActionResult> Create([Bind("productId,productName,productColor")] product product)
        {
            if (ModelState.IsValid)
            {
                _context.Add(product);
                await _context.SaveChangesAsync();
                return RedirectToAction(nameof(Index));
            }
            return View(product);
        }

Результат:

Форма, по-видимому, содержит нулевое значение для значения productColor, но для моделисостояние недопустимо в контроллере, и представление возвращается с 'Значение' Select 'недопустимо для productColor.'

1 Ответ

0 голосов
/ 04 февраля 2019

Обновите элемент option, добавив пустой тег value

<select asp-for="productColor" asp-items="@Html.GetEnumSelectList<color>()" class="form-control">
        <option value="">Select</option> <!-- notice value="" -->
</select>

Если тега value нет, указанный браузер отправляет внутренний текст option в качестве выбранного значения.Таким образом, в вашем случае браузер отправляет Select значений, которые не подходят для контроллера.Этот код указывает браузеру отправлять пустое значение, которое успешно преобразовано в null в ASP.NET.

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