Я использую 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?
Есть идеи?
Похоже, вы пытаетесь подписаться на клиентскую функцию onchange
для значения, которое генерируется на сервере и изменяется только на сервере. Так что нормально, что эта функция на стороне клиента никогда не срабатывает. На самом деле вы никогда не использовали javascript для изменения значения скрытого поля, поэтому вы не можете ожидать, что этот обратный вызов будет поднят.
Если вы изменяете значение на сервере, то на сервер указывается, что значение изменилось. Например, у вас может быть какое-то дополнительное свойство в вашей модели представления, указывающее, что значение изменилось (что бы это ни значило в вашем контексте, потому что изменилось. Всегда можно сравнить с каким-то предыдущим состоянием). Затем на клиенте вы можете сериализовать это свойство как переменную javascript, чтобы клиентская сторона узнала об изменениях, произошедших на сервере.
hidden
элемента ...?