Регистрация на событие onchange для бритвы @ Html.HiddenFor

0

Я использую asp.net mvc 4, jquery и бритву. На мой взгляд, у меня ниже бритвы statemet:

@Html.HiddenFor(m => m.MyItemViewModel.id);

Мне нужно вызвать функцию jquery/javascript при изменении ее значения. Поэтому я решил записать функцию jquery/javascript для события onchange для тэга HiddenFor razor, но я не знаю, возможно ли это.

Я выполнил ниже код, но, похоже, не работает, поскольку OnHiddenValueChanged не достигнут:

@Html.HiddenFor(m => m.ItemCompViewModel.id, new { onchange="OnHiddenValueChanged" });

<script>
    function OnHiddenValueChanged() {
    }
</script>

Или еще лучше, как обнаружить из представления, когда m.ItemCompViewModel.id (элемент для моей модели представления) изменился, а затем вызвал функцию jquery/javascript?

Есть идеи?

  • 0
    Событие изменения никогда не запускается для hidden элемента ...?
  • 0
    Будет ли когда - нибудь изменится (во время выполнения на стороне клиента) значение в скрытом поле ?!
Показать ещё 8 комментариев
Теги:
razor
asp.net-mvc-4

1 ответ

3

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

Если вы изменяете значение на сервере, то на сервер указывается, что значение изменилось. Например, у вас может быть какое-то дополнительное свойство в вашей модели представления, указывающее, что значение изменилось (что бы это ни значило в вашем контексте, потому что изменилось. Всегда можно сравнить с каким-то предыдущим состоянием). Затем на клиенте вы можете сериализовать это свойство как переменную javascript, чтобы клиентская сторона узнала об изменениях, произошедших на сервере.

  • 0
    Ну, на самом деле, у меня есть поле «id» в модели представления «MyItemViewModel», чтобы узнать, изменилось ли оно или нет, которое связано со скрытым полем. Не могли бы вы опубликовать кусок кода о том, как сделать то, что вы описали? Я новичок в этом ... извините.
  • 0
    Мне интересно, можно ли вручную вызвать с контроллера событие изменения скрытого поля в представлении ... Возможно ли это?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню