ASP.NET MVC тормозит вызов JS

#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\")" })