在 ASP.NET (c#) 中将表转换为 HTML



我有一个 Table 对象,我已经在我的代码隐藏中创建并填充了它。由于各种原因,必须以这种方式进行。

我从客户端通过 AJAX 调用 WebMethod 以从下拉列表中发送变量,然后将表填充到代码隐藏中的静态方法中。我需要将表放入 ASP.Net 占位符中。我不能从静态方法调用占位符。

不要使用 ASP.NET AJAX 页面方法从客户端 AJAX 调用返回

数据,而是尝试使用 ASP.NET HTTP 处理程序,因为它将允许您更好地控制通过 HTTP 标头返回的内容,而不必对 ASP.NET AJAX 页面方法调用的结果进行编码,如下所示:

public class GetHtmlHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        // Grab the drop down list variable value from the query string
        // Use controls to build table or do it via StringWriter
        // Create a table row with three cells in it
        TableRow theTableRow = new TableRow();
        for (int theCellNumber = 0; theCellNumber < 3; theCellNumber++)
        {
            TableCell theTableCell = new TableCell();
            tempCell.Text = String.Format("({0})", theCellNumber);
            theTableRow.Cells.Add(theTableCell);
        }
        // Create writers to render contents of controls into
        StringWriter theStringWriter = new StringWriter();
        HtmlTextWriter theHtmlTextWriter = new HtmlTextWriter(theStringWriter);
        // Render the table row control into the writer
        theTableRow.RenderControl(theHtmlTextWriter);
        // Return the string via the StringWriter
        context.Response.Write(theStringWriter.ToString());
    }
    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}

现在在客户端,使用 jQuery .ajax() 函数调用 HTTP 处理程序,如下所示:

$(document).ready(function() {
    $.ajax({
        type: "POST",
        url: "PATH_TO_HANDLERS/GetHtmlHandler.ashx?id=YOUR_DROP_DOWN_VALUE",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(result) {
            // Select the placeholder control by class here and put HTML into it
            $('.ThePlaceHolder').html(result);
        }
    });
}); 

注意:上述选择器要求您向PlaceHolder控件添加 CssClass 属性,如下所示:

<asp:PlaceHolder id="PlaceHolder1" runat="server" CssClass="ThePlaceHolder" />

更新:

您可以使用PlaceHolderID,而不是在 jQuery 选择器中使用 class 名称,我最初建议不要这样做,因为在 ASP.NET 中使用母版页时,它会导致名称重整。无论如何,您可以使用ClientIDMode属性,如下所示:

<asp:PlaceHolder id="PlaceHolder1" runat="server" ClientIDMode="Static" />

现在你的jQuery选择器看起来像这样:

// Select the placeholder control by ID here and put HTML into it
$('#<%= PlaceHolder1.ClientID %>').html(result);

注意:我宁愿尽可能避免尖括号(<%= %>(符号。

相关内容

  • 没有找到相关文章

最新更新