0

我正在使用 asp.net mvc 4、jquery 和 razor。在我看来,我有以下剃刀声明:

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

我需要在其值更改时调用 jquery/javascript 函数。所以我想为 HiddenFor razor 标签订阅 jquery/javascript 函数的 onchange 事件,但我不知道这是否可能。

我已经实现了下面的代码,但它似乎不起作用,因为未达到 OnHiddenValueChanged:

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

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

或者更好的是,如何从视图中检测 m.ItemCompViewModel.id(我的视图模型的项目)何时发生变化,然后调用 jquery/javascript 函数?

有任何想法吗?

4

1 回答 1

3

看起来您正在尝试订阅onchange客户端函数以获取在服务器上生成且仅在服务器上更改的值。所以这个客户端功能永远不会被触发是正常的。实际上,您从未使用任何 javascript 来更改隐藏字段的值,因此您不能期望引发此回调。

如果您正在修改服务器上的值,则由服务器告诉客户端该值已更改。例如,您可以在视图模型上有一些额外的属性来告诉值已更改(无论这在您的上下文中意味着什么 - 因为更改的 . 必须始终与某些先前的状态进行比较)。然后在客户端上,您可以将此属性序列化为 javascript 变量,以便客户端知道服务器上发生的更改。

于 2013-10-22T13:28:21.077 回答