2009-08-03 45 views
0

私がしたいことは、ユーザーがラジオボタンをクリックしたときにJavaScriptルーチンを呼び出すことです。これが起こると、私はいくつかのフィールドを有効/無効にしています。しかし、ときに私はonlickイベントを追加しようとしたとき、私は予想されるエラー「またはタイプ」を取得していますHtml.RadioButtonにOnClickイベントを追加する

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

を入力してください。これは簡単ですが、私が見つけたサンプルのどれもうまくいかないようです。先行する「@」は、私が見つけたすべての例では一般的ですが、他のものは見当たりません。

はい、私は "真"をチェックする方法が残酷であることを知っていますが、特別な目的のコードジェネレーターで作成されているので、余分な作業はありませんでした。

どのような考えですか?

答えて

1

コード内にYes()の機能が正しく定義されていますか? Yes()をjavacript alert()関数に置き換えます。それがうまくいけば、投稿したコード行はOKです。

また、ここにYes()の機能を投稿してください。エラーがあるかもしれません。

+0

私はYes()をalertに置き換えて同じ問題を抱えていました –

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> 
+0

「新しい」keywoardで、あなたは彼がVBを使用していると思わせるもの、彼はC#を使用しているように、それが見えます。 –

+0

エラーはコンパイラエラーのようであり、ブラウザエラーではないため、クラス識別子または匿名型のWithキーワードが必要であることを示します。私はページ言語がC#の場合、これが当てはまるとは思わないでしょう。 – tvanfosson

+0

C#の代わりにVBを期待していると、私の頭にもポップされたものです...この答えはおそらく現れます。 – Funka

2

問題が発生したために私を許してください。私の問題は、 "System.Web.Mvc.ViewUserControl"を継承するASCXファイルの最初の行を削除することによって最終的に発生しました。

働いていたコードの行は、サンプルより

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

異なるラインだったが、彼らはすべて同じです。

もう一度、混乱を招いて申し訳ありません。

トム

2

一般的な構造は次のようになります。

@Html.RadioButtonFor(t => t.ViewModelVariableName,"RadioButtonValue", new {javascriptEvent = "javascriptMethodName"}); 
関連する問題