【问题标题】:asp:placeholder content update with ajaxasp:placeholder 使用 ajax 更新内容
【发布时间】:2019-12-24 19:48:04
【问题描述】:

我有一个 asp:placeholder,它在加载文档时保留文字文本。使用ajax,我需要更新文字。我挖了一些,但没有找到答案。

这是我的 asmx 代码:

<div class="modal fade in" id="yoklama" tabindex="-1" aria-hidden="true" style="display: none; padding-right: 17px;">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
                <h4 class="modal-title">Yoklama Kayıtları</h4>
            </div>
            <div class="modal-body">
                <asp:PlaceHolder runat="server" ID="tbl_pdcr_main"></asp:PlaceHolder>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn dark btn-outline" data-dismiss="modal">Close</button>
                <%--<button type="button" class="btn green">Save changes</button>--%>
                <asp:HiddenField runat="server" ID="hdf_pdcr_reg" />
            </div>
        </div>
    </div>
</div>

这是我的 javascript 代码:

$.ajax({
    url: '/Staff/PDX.aspx/GetPDCRRecords',
    method: 'post',
    contentType: 'application/json',
    data: '{r_id:' + yil + '}',
    dataType: 'json',
    success: function (data) {
        $('#<%=lbl_pdcx_y_gec.ClientID%>').text(data.d.YGec);
        $('#<%=lbl_pdcx_y_msiz.ClientID%>').text(data.d.YMaz);
        $('#<%=lbl_pdcx_y_rap.ClientID%>').text(data.d.YRap);
        $('#<%=lbl_pdcx_y_terk.ClientID%>').text(data.d.YTerk);
        $('#<%=lbl_pdcx_y_diger.ClientID%>').text(data.d.YDiger);

        $('#<%=tbl_pdcr_main.ClientID%>').replaceWith(data.d.PDCRLog);
    },
    error: function (error) {
        alert(error);
    }
});

感谢您的帮助。

【问题讨论】:

    标签: c# jquery asp.net ajax webforms


    【解决方案1】:

    您的问题来自事实,即 PlaceHolder 不呈现任何 HTML,然后您的 id 搜索无法找到它。

    您可以尝试改用Panel

    【讨论】:

      【解决方案2】:

      如果您使用 ASP.NET Web 窗体框架,我建议不要在 Ids 上进行中继,因为该框架会在生成的客户端代码中为它们添加一些前缀。您可以使用 Web 浏览器的开发人员工具检查我是否正确查看生成的代码。我建议使用CssClass 属性,但是,这样的东西不起作用:

      <asp:PlaceHolder runat="server" ID="tbl_pdcr_main" CssClass="tbl-pdcr-main"></asp:PlaceHolder>
      

      由于PlaceHolder服务器控件没有任何可见的输出,在我们在运行时添加控件时用作占位符,因此它不会生成HTML div等

      我要做的是向一些 HTML 元素添加一个额外的 CSS 类,它可以是 div 作为示例(CssClass 也应该适用,但适用于不同的 asp 元素)

      <div class="modal-body tbl-pdcr-main">
                      ...
      

      所以你的 ajax 代码的 success 部分可以正常工作,例如如下:

      success: function (data) {
         $('.tbl-pdcr-main').text(data.d.YGec);
      },
      

      【讨论】:

      • 使用css类名确实是一个不错的解决方案。但是 ClientID 是为 JavaScript 设计的,它的唯一性由 asp.net 处理。如果他使用 css 类,他将需要自己确保唯一性。
      • 我认为这也可以是一个解决方案:$("[id$=yourId]") :D
      猜你喜欢
      • 2018-01-28
      • 2014-12-30
      • 1970-01-01
      • 1970-01-01
      • 2016-04-14
      • 2019-11-21
      • 1970-01-01
      • 2013-02-12
      • 1970-01-01
      相关资源
      最近更新 更多