#c# #.net #asp.net #asp.net-mvc
#c# #.net #asp.net #asp.net-mvc
Вопрос:
У меня есть строка с вызовом javascript, которая привязана к событию выбора HTML:
@Html.DropDownList(Model.DropDownName, Model.ItemsForView, new { onchange = "someMethod('someArgumentValue')" })
который отображается в следующем коде:
onchange="someMethod(amp;#39;someArgumentValueamp;#39;)"
Есть ли какой-нибудь способ заставить ‘symbol отображать’как есть’?
Комментарии:
1. Возможно, вы захотите рассмотреть возможность динамического подключения ваших событий.
Ответ №1:
Было бы лучше использовать ненавязчивый javascript:
@Html.DropDownList(Model.DropDownName, Model.ItemsForView, new { id = "foo" })
и в отдельном .js
файле:
$(function() {
$('#foo').change(function() {
someMethod('someArgumentValue');
});
});
Есть как минимум два преимущества:
- Вы не смешиваете скрипт и разметку
- Разметка сокращена, а скрипты кэшируются браузером
Комментарии:
1. Да, это правильный путь. Обратите внимание, что это привносит зависимость от jQuery в микс, но это хорошо 🙂
2. В конечном итоге я переопределю его в ненавязчивый js… но теперь мне нужно быстрое и грязное решение. Я надеялся, что он есть…
Ответ №2:
Попробуйте:
@Html.DropDownList(Model.DropDownName, Model.ItemsForView, new { onchange = @"someMethod('someArgumentValue')" })
или
@Html.DropDownList(Model.DropDownName, Model.ItemsForView, new { onchange = "someMethod('someArgumentValue')" })
или
@Html.DropDownList(Model.DropDownName, Model.ItemsForView, new { onchange = "someMethod(\"someArgumentValue\")" })