#javascript #asp.net-mvc-4 #razor #escaping
#javascript #asp.net-mvc-4 #razor #экранирование
Вопрос:
итак, как я могу процитировать параметры функции java script в Html Razor.Помощник Raw? Похоже, что для того, чтобы иметь возможность вызывать определенную функцию js, мне нужно, чтобы параметры были заключены в одинарные кавычки..
при выводе неэкранированных параметров:
@Html.Raw("<a onClick='copyRowValues(" name ", " localTable ", " sqlName ");' > " name " </a>");
переводится как:
<a onclick="copyRowValues(ASN, ASN, ASN_RECORD_ID);">
это выглядит неплохо, но когда эти параметры для функции copyRowValues(…) js не заключены в одинарные кавычки, функция не вызывается.
итак, когда я добавляю одинарные кавычки, подобные этому:
@Html.Raw("<a onClick='copyRowValues('" name "', '" localTable "', '" sqlName "');' > " name " </a>");
это приводит к:
<a 'asn_record_id');'="" 'asn',="" asn',="" onclick="copyRowValues(">
экранирование с помощью @ или просто не сработало для меня.
Спасибо за простое решение!
Комментарии:
1. Есть ли причина, по которой вы используете raw helper вместо
<a>
самого a? У меня возникли проблемы с представлением сценария, в котором это не сработало бы.
Ответ №1:
Работает ли использование двойных кавычек? например
@Html.Raw("<a onClick=""copyRowValues('" name "', '" localTable "', '" sqlName "');"" > " name " </a>");
Комментарии:
1. нет, это синтаксически плохо, и этот подход я уже пробовал, как вы можете видеть в моем вопросе.
Ответ №2:
Почему бы не решить без Html.Raw()? Использовать его для генерации выходного HTML-кода как-то устаревший подход.
Попробуйте что-то вроде этого:
<a onclick="copyRowValues(@name, @localTable, @sqlName)">@name</a>
Надеюсь, это поможет.
Комментарии:
1. Однако вам все равно понадобятся одинарные кавычки, например:
copyRowValues('@name', '@localTable', '@sqlName')
2. @NickCraver на самом деле это переводится как:
<a '@sqlname');'="" '@localtable',="" @name',="" onclick="copyRowValues("></a>