【问题标题】:Accessing Tag Helper output in Javascript在 Javascript 中访问 Tag Helper 输出
【发布时间】:2017-11-05 22:14:39
【问题描述】:

恐怕是 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 字符串。

例如

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

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

感谢任何提示!

【问题讨论】:

  • 您是否尝试将所需的 JavaScript 放在页面底部?可能是 DOM 问题……您的 JavaScript 正在尝试查找尚未发送的 ID?
  • 这不是问题。标签助手根本不在

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


【解决方案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 中,您可以选择此脚本标签并获取其内容:

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

【讨论】:

    猜你喜欢
    • 2016-09-23
    • 2016-03-18
    • 2015-12-08
    • 1970-01-01
    • 2020-06-17
    • 1970-01-01
    • 2016-04-10
    相关资源
    最近更新 更多