在Javascript

时间:2017-11-05 22:14:39

标签: asp.net-core-mvc asp.net-core-tag-helpers

用害怕Razor和标签助手的初学者问题我很害怕! 在我的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字符串并将其作为变量注入等等 - 有没有办法可以使用我的标签助手的输出脚本部分?

感谢任何提示!

1 个答案:

答案 0 :(得分:2)

你不能这样做。 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中,您可以选择此脚本标记并获取其内容:

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