JQuery дает ссылку ошибки при добавлении Enum через Razor - PullRequest
0 голосов
/ 07 января 2019

Вот мой код. При нажатии кнопки я пытаюсь ввести значение флага перечисления в таблицу базы данных, но получаю справочную ошибку.

<button type="button" class="btn btn-default clean" data-id="@item.RoomId">status</button>

$(function () {
  $('.clean').click(function () {
    $.post("@Url.Action("SetStatus", "ReceptionHk")", { 
      id: $(this).data("id"), 
      newStatus: @EnumHkStatus.Cleaning 
    });
  });
});
[Flags]
public enum EnumHkStatus
{
  None,
  Repair,
  Cleaning,
  InventoryCheck,
  Occupied
};

при нажатии кнопки я пытаюсь ввести значение в столбце состояния в виде значения int, как в перечислителе с флагами, но я получаю следующую ошибку

ReferenceError: Очистка не определена

Пожалуйста, помогите мне с этим

1 Ответ

0 голосов
/ 07 января 2019

Посмотрите, что ваш серверный код выводит в браузер. Звучит так:

@EnumHkStatus.Cleaning

выводит это:

Cleaning

Что не понимается в коде JavaScript. (Это то, о чем конкретно говорит ошибка.) Для вашего кода JavaScript вы, вероятно, захотите, чтобы это была строка:

'@EnumHkStatus.Cleaning'

или int:

@((int)EnumHkStatus.Cleaning)

(Какой из них зависит от вас. Возможно, вы захотите протестировать оба, я не уверен, что связыватель модели может автоматически преобразовать один или оба из них обратно в значение enum.) Так что в конечном итоге ваш вызов POST будет по крайней мере содержать действительный код. Например:

$.post("@Url.Action("SetStatus", "ReceptionHk")", { id: $(this).data("id"), newStatus: @((int)EnumHkStatus.Cleaning) });

выведет что-то вроде:

$.post("/ReceptionHk/SetStatus", { id: $(this).data("id"), newStatus: 3 });

Вам может затем нужно обновить действие SetStatus, чтобы принять int или string (в зависимости от того, что вы выбрали), если только привязка модели не может преобразоваться в соответствующий enum для вас , Вы хотите проверить это. Если вам нужно изменить сигнатуру метода, просто преобразуйте ее обратно в соответствующий enum в начале метода действия.

Примечание: Вы , вероятно, хотите иметь некоторый код для обработки ответа AJAX, если только по какой-либо другой причине, кроме проверки успешности / неудачи операции.

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