Доступ к выходным данным Tag Helper в Javascript

Боюсь, начинающий вопрос с Razor и помощниками по тегам! Используя помощники тегов в моем бритвенном html, я могу, например. записывать:

<div><date-picker id="datepicker" value="@DateTime.Now"></date-picker></div>

Затем это сгенерирует вывод

<input id="datepicker" class="datepicker" aria-atomic="true" aria-live="assertive" aria-expanded="false" role="combobox" name="datepicker" placeholder="Select date">

и так далее. Что я хотел бы сделать, так это добавить вывод к другим объектам, таким как экраны диалогов, которые принимают строку html для добавления.

e.g.

var customDesign = "<div id="something"><date-picker id="datepicker" value="@DateTime.Now"></date-picker></div>";
$(".myDialogfield").after(customDesign);

Это не работает в Razor - я пробовал разные вещи, например, сначала создать это как строку HTML.Raw и ввести ее как переменную и т. д. - есть ли способ использовать вывод моего помощника тега в разделе скрипта?

Спасибо за любые подсказки!


person ExternalUse    schedule 05.11.2017    source источник
comment
Пробовали ли вы размещать обязательный JavaScript внизу страницы? Может быть, это проблема DOM... ваш JavaScript пытается найти идентификатор, который еще не был отправлен?   -  person Muqeet Khan    schedule 06.11.2017
comment
Это не проблема. Помощник тега просто не обеспечивает вывод внутри тега ‹script›, он оставляет помощник тега без изменений.   -  person ExternalUse    schedule 06.11.2017


Ответы (1)


Вы не можете сделать это таким образом. TagHelpers интерпретируются. Другими словами, Razor должен видеть их как настоящие теги, чтобы заменить их. Здесь это просто строка JS, и Razor не будет с ней связываться.

Лучше всего, вероятно, будет какая-то система шаблонов JavaScript, но, вообще говоря, вы все равно можете получить то, что хотите, вручную, используя другой путь. Вместо жесткого кодирования строки HTML включите TagHelper в блок скрипта типа text/html:

<script type="text/html" id="MyTemplate">
    <date-picker id="datepicker" value="@DateTime.Now"></date-picker>
</script>

Затем в своем JavaScript вы можете выбрать этот тег script и получить его содержимое:

var customDesign = $('#MyTemplate').html();
$(".myDialogfield").after(customDesign);
person Chris Pratt    schedule 06.11.2017