【问题标题】:razor code in external javascript treated as string外部javascript中的剃刀代码被视为字符串
【发布时间】:2019-05-01 12:25:28
【问题描述】:

我想在服务器上运行一个元素之后的特定元素之后添加一个表格元素,但是当我尝试访问元素的 id 时,它被视为字符串

我尝试在警报中显示 id 或元素,但它是字符串 我试图检查堆栈溢出的其他帖子,但他们都说访问方式与我产生字符串的方式相同 我尝试将与 aspx 文件中的字符串中的代码相同的代码,它可以工作,所以我知道

没有问题

在 aspx 文件中

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <div class="Manager">
        <p id="message" runat="server" class="caption">
            There aren't any users in the database
        </p>
        <form runat="server">
            <asp:HiddenField id="hfData" runat="server"/>
        </form>
        <script src="js/Manager.js" ></script>
    </div>
</asp:Content>

在 Manager.js 中

var message = document.getElementById('<%=message.ClientID %>');
message.parentNode.insertBefore(tbl, message.nextSibling);

当我看到它的值时消息等于未定义 并且下面的代码没有执行

我尝试了以下方法来尝试访问 id

var str = '<%=message.ClientID%>';
alert(str);

但它会将 警告为字符串 它应该产生 ContentPlaceHolder1_message 的输出

【问题讨论】:

    标签: javascript asp.net webforms


    【解决方案1】:

    首先,尝试将 Manager.js 脚本直接添加到对我有用的 aspx 页面。恐怕此时在服务器上执行.aspx页面时,页面渲染时不包含Manager.js。

    <p id="message" runat="server" class="caption">
         There aren't any users in the database
    </p>
    <script type="text/javascript">
         var str = '<%=message.ClientID%>';
         alert(str);
    </script>
    

    【讨论】:

    • 我现在明白你的意思了,谢谢,有什么方法可以让脚本在服务器端第一次呈现并将 ID 保存在变量中?
    • 很高兴能得到任何帮助
    【解决方案2】:

    我设法通过在服务器端使用剃须刀代码创建一个 javascript 变量然后在外部 javascript 文件中使用它来解决问题

    在 aspx 中

    <script type="text/javascript">
        var messageId = '<%=message.ClientID%>';
    </script>
    

    在 Manager.js 中

    var message = document.getElementById(messageId);
    message.parentNode.insertBefore(tbl, message.nextSibling);
    

    【讨论】:

      猜你喜欢
      • 2018-03-01
      • 2016-06-25
      • 2016-08-15
      • 1970-01-01
      • 2021-07-28
      • 2014-09-04
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多