在 Javascript 中访问 Tag Helper 输出

Accessing Tag Helper output in 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 字符串。

例如

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

这在 Razor 中不起作用 - 我尝试了各种方法,例如首先将其创建为 HTML.Raw 字符串并将其作为变量注入等 - 有没有一种方法可以使用我的输出脚本部分中的标记助手?

感谢任何提示!

你不能那样做。 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 中,您可以 select 这个脚本标签并获取其内容:

var customDesign = $('#MyTemplate').html();
$(".myDialogfield").after(customDesign);