【问题标题】:Building HTML from Javascript in Asp在 Asp 中从 Javascript 构建 HTML
【发布时间】:2015-10-30 13:33:03
【问题描述】:

这个格式化的字符串有什么问题?

function buildDialog()
    {
        var str = '<owd:Dialog id="a_myDialog" Title="my Dialog" Width="400" Height="215" StyleFolder ="wdstyles/default"' +
        'IsModal="true" runat="server">' + '... Hello world ...' + ' <br /> ' +
                   '<asp:button id="aspButton1" text="Yes" runat="server" onclick="btnAlert_Click" />' +
                    '<input type="button"  id="client_no_commit" value="No" onclick="a_myDialog.Close()"/>' +
                '</owd:Dialog>';

        alert($(str));

    }

我正在尝试创建上述对话框,但 Visual Studio 2015 一直说第一行有错误? jQuery 是可选的。

【问题讨论】:

  • 对我来说完全正确。
  • 它应该生成对话框,但解析在第一行停止。
  • @user2415266 这在 ASP.NET 中是不正确的,您不能像这样从客户端标记创建服务器端控件。将来您可能希望小心回答此类 ASP.NET 问题以避免混淆。 ASP.NET 确实处理 在服务器上 的特殊标记以生成结果 HTML。

标签: javascript asp.net


【解决方案1】:

您不能使用客户端代码来生成服务器端代码。当浏览器生成 ASP 时,服务器将完成运行 ASP 并将结果发送到浏览器。

错误报告可能与您尝试在脚本元素中使用 ASP 标记有关。

【讨论】:

  • 可能,但您必须处理浏览器中的 DOM,而不是生成生成 DOM 的 HTML 的 ASP。
  • 我尝试通过以下方式从 javascript 访问 html:document.getElementById('a_myDialog').InnerHTML = str;但该元素为空。我也尝试过 window.onload,结果相同。
  • 你用 DOM 检查器查看过 DOM 吗?我的印象是 ASP 中的 id 属性是服务器端 ID,而不是客户端 ID。
  • @Quentin 您是对的,这是在模板化控件或母版页情况等中表现出来的默认行为。您可以通过向元素添加 ClientIdMode="static" 属性来解决它(您也可以在页面或应用程序级别设置),或者您可以使用特殊语法嵌入正确的 ID,例如 var element = '&lt;%= a_myDialog.ClientId %&gt;';。或者你可以使用类,但我不喜欢在引用特定元素时这样做。
猜你喜欢
  • 1970-01-01
  • 2011-04-25
  • 2023-03-26
  • 1970-01-01
  • 2016-09-18
  • 2011-06-23
  • 2011-05-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多