将OnClick事件添加到Html.RadioButton

时间:2009-08-03 19:34:23

标签: asp.net-mvc model-view-controller

我想要做的是在用户点击radiobutton时调用JavaScript例程。发生这种情况时,我有一些字段可以启用/禁用。但是,当我进入

 <%=Html.RadioButton("obp17", "57", ViewData.Eval("obpValue17").ToString().Equals("57"), new {@onclick = "Yes()"})%>

我在尝试添加onlick事件时收到“类型或”预期错误“。这应该很容易,但我找到的样本似乎都没有用。领先的“@”在我找到的所有例子中都很常见,但似乎缺少其他东西。

是的,我知道检查“true”的方法是过度的,但它是用特殊用途的代码生成器创建的,所以它不是任何额外的工作。

有什么想法吗?

4 个答案:

答案 0 :(得分:3)

请原谅我造成任何问题。我的问题最终是由删除继承“System.Web.Mvc.ViewUserControl”的ASCX文件的第一行造成的。一旦我把它放进去,所有的问题就消失了。

有效的代码行是

 <%= Html.TextBox("obpt9",ViewData.Eval("obpt9"), new { onclick = "alert('hi')" })%>

与样本不同的行,但它们都是相同的。

再次,抱歉造成任何人混淆。

汤姆

答案 1 :(得分:3)

一般结构如下所示:

@Html.RadioButtonFor(t => t.ViewModelVariableName,"RadioButtonValue", new {javascriptEvent = "javascriptMethodName"});

答案 2 :(得分:2)

页面语言是VB还是C#?如果是VB,则创建匿名类型的html属性的语法是错误的。有关如何在VB中创建具有匿名类型的对象,请参阅此MSDN reference

 <%=Html.RadioButton("obp17",
                     "57",
                     ViewData.Eval("obpValue17").ToString().Equals("57"),
                     New With { .onclick = "Yes()" } ) %>

或者将页面语言更改为C#,如果这更合适。

另外,请注意,您可以(可以说应该)只是给单选按钮一个类,然后使用jQuery一次添加所有处理程序。通常你想让你的javascript与你的标记分开。

 <%=Html.RadioButton("obp17",
                     "57",
                     ViewData.Eval("obpValue17").ToString().Equals("57"),
                     New With { .class = "heinz" } ) %>

 <script type="text/javascript>
     $('.heinz').click( function() {
        ... implement the logic of Yes() here ...
     });
 </script>

答案 3 :(得分:1)

您的代码中是否正确定义了Yes()函数?将Yes()替换为javascript alert()函数;如果可行,那么您发布的代码行就可以了。

另外,请在此处发布Yes()功能,我认为可能存在一些错误。