我正在使用asp.net mvc 4,jquery和razor。在我看来,我在剃刀状态下面了:
@Html.HiddenFor(m => m.MyItemViewModel.id);
我需要在值改变时调用jquery / javascript函数。所以我曾想过将jquery / javascript函数用于HiddenFor razor标签的onchange事件,但我不知道是否可能。
我已经实现了以下代码但似乎无法正常工作,因为未达到OnHiddenValueChanged:
@Html.HiddenFor(m => m.ItemCompViewModel.id, new { onchange="OnHiddenValueChanged" });
<script>
function OnHiddenValueChanged() {
}
</script>
或者更好的是,当m.ItemCompViewModel.id(我的视图模型的项目)发生了变化,然后调用jquery / javascript函数时,如何从视图中检测?
有什么想法吗?
答案 0 :(得分:3)
您似乎正在尝试为服务器上生成的值订阅onchange
客户端功能,并仅在服务器上进行更改。因此,永远不会触发此客户端功能是正常的。实际上你从来没有使用任何javascript来改变隐藏字段的值,所以你不能指望这个回调被提出。
如果要修改服务器上的值,则由服务器决定是否更改了值。例如,您可以在视图模型上有一些额外的属性,告知值已更改(在您的上下文中意味着什么 - 因为已更改。必须始终与之前的某个状态进行比较)。然后在客户端上,您可以将此属性序列化为javascript变量,以便客户端知道服务器上发生的更改。