при обратной передаче получить данные из модели - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть раскрывающийся список в .NET Core MVC, и условие: если значение уже выбрано, мне не нужно показывать раскрывающийся список, но если он не выбран и не сохранен, то я должен показать его и заставить пользователя выбратьодин, если он хочет сохранить.

Я пытался не привязывать выпадающий список к

@if (Model.Input.RoleId == 0) 
{
  <div class="form-group" id="dvRole">
    <label asp-for="Input.RoleId" class="label"></label>
    <select asp-for="Input.RoleId" asp-items="@(new 
      SelectList(Model.User_Role, " ItemCode ", "ItemDisplayName "))" id="ddlRole">
      <option value=""></option>
    </select>
  </div>
}

, но когда я нажимаю на кнопку сохранения, это дает ошибку.Я проверяю model.validate, и там выдает ошибку: buz Input.RoleId не имеет никакого значения при отправке сообщения назад.

Пожалуйста, предложите.

свойство определено как

[Display(Name = "Role")]
[Required(ErrorMessage = "Please define your role.")]
public int? RoleId { get; set; }

Я справился с этим, связав выпадающий список всегда и скрыв div с помощью jquery, но я не думаю, что это оптимальный способ сделать это.

1 Ответ

0 голосов
/ 15 февраля 2019
  1. Поскольку вы украсили RoleId атрибутом [Required(ErrorMessage = "Please define your role.")], не устанавливайте его в качестве дополнительной вейла int? одновременно:
    [Display(Name = "Role")]
    [Required(ErrorMessage = "Please define your role.")]
    <strike>public int? RoleId { get; set; } </strike>
    public int RoleId { get; set; } 
Избегайте добавления пустого значения для RoleId в раскрывающемся списке на <option value=""></option>. Наконец, измените ваше представление, как показано ниже:
    @if (Model.Input.RoleId == 0) 
    {
    <div class="form-group" id="dvRole">
        <label asp-for="Input.RoleId" class="label"></label>
        <select asp-for="Input.RoleId" asp-items="@(new SelectList(Model.User_Role, "ItemCode", "ItemDisplayName"))" id="ddlRole">
        </select>
    </div>
    }

Это работает для меня.


В качестве примечания Если вы должны использовать тип int? для RoleId, вам необходимо проверить, равен ли Model.Input.RoleId null или равен 0.

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