我正在使用 asp.net mvc 4、jquery 和 razor。我认为以下是 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>
或者更好的是,如何从 View 中检测 m.ItemCompViewModel.id (我的 View 模型的项目)何时发生更改,然后调用 jquery/javascript 函数?
有什么想法吗?
最佳答案
您似乎正在尝试订阅 onchange
客户端函数,以获取在服务器上生成且仅在服务器上更改的值。所以这个客户端函数永远不会被触发是正常的。实际上,您从未使用过任何 JavaScript 来更改隐藏字段的值,因此您不能期望引发此回调。
如果您要修改服务器上的值,则由服务器来告诉客户端该值已更改。例如,您的 View 模型上可以有一些附加属性,表明该值已更改(无论这在您的上下文中意味着什么 - 因为已更改。必须始终与某些先前的状态进行比较)。然后在客户端上,您可以将此属性序列化为 JavaScript 变量,以便客户端了解服务器上发生的更改。
关于javascript - 注册 razor @Html.HiddenFor 的 onchange 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19518551/