Добавить событие OnClick в Html.RadioButton - PullRequest
0 голосов
/ 03 августа 2009

Что я хочу сделать, это вызвать процедуру JavaScript, когда пользователь нажимает на кнопку радио. У меня есть несколько полей для включения / выключения, когда это происходит. Тем не менее, когда я ввожу

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

Я получаю "тип или с" ожидаемой ошибкой при попытке добавить событие onlick. Это должно быть легко, но ни один из образцов, которые я нашел, кажется, не работает. Символ «@» встречается во всех найденных мной примерах, но чего-то еще не хватает.

И да, я знаю, что способ проверки на "true" излишний, но он создается с помощью генератора кода специального назначения, поэтому это не было дополнительной работой.

Есть мысли?

Ответы [ 4 ]

3 голосов
/ 30 июля 2015

Общая структура выглядит следующим образом:

@Html.RadioButtonFor(t => t.ViewModelVariableName,"RadioButtonValue", new {javascriptEvent = "javascriptMethodName"});
3 голосов
/ 04 августа 2009

Прошу прощения за то, что у меня возникли проблемы. В конечном итоге моя проблема была вызвана удалением первой строки ASCX-файла, который унаследовал «System.Web.Mvc.ViewUserControl». После того, как я его вставил, все проблемы исчезли.

Строка кода, которая работала была

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

Отличается от образца, но все они одинаковы.

Опять же, извините за то, что вызвал путаницу.

1010 * Том *

2 голосов
/ 04 августа 2009

Является ли язык страницы VB или C #? Если это VB, ваш синтаксис неправильный для создания атрибутов анонимного типа html. См. справочник MSDN о том, как создать объект с анонимным типом в VB.

 <%=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>
1 голос
/ 04 августа 2009

Правильно ли определена в вашем коде функция Yes()? Заменить Yes() на функцию javascript alert(); если это работает, то строка кода, которую вы разместили, в порядке.

Также, пожалуйста, опубликуйте здесь функцию Yes(), и я думаю, что там может быть какая-то ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...