gpt4 book ai didi

asp.net - 防止在自动生成的 GridView 列中进行 HTML 编码

转载 作者:行者123 更新时间:2023-12-02 06:57:36 25 4
gpt4 key购买 nike

我有一个 GridView 绑定(bind)到我构建的 DataTable。表中的大多数列都包含超链接的原始 HTML,我希望该 HTML 在浏览器中呈现为链接,但 GridView 会自动对 HTML 进行编码,因此它呈现为标记。

如何在不显式添加超链接或任何其他列的情况下避免这种情况?

最佳答案

只需设置 BoundColumn.HtmlEncode 属性为 false:

<删除> <asp:BoundField DataField="HtmlLink" HtmlEncode="false" />

<小时/>

恐怕没有简单的方法可以禁用 GridView 中内容的 HTML 编码。与 AutoGenerateColumns = true 。但是,我可以想到两种可能解决您面临的问题的解决方法:

选项 1:继承 GridView类,覆盖 Render方法,在执行基本方法之前循环遍历所有单元格,解码其内容:

for (int i = 0; i < Rows.Count; i++) 
{
for (int j = 0; j < Rows[i].Cells.Count; j++)
{
string encoded = Rows[i].Cells[j].Text;
Rows[i].Cells[j].Text = Context.Server.HtmlDecode(encoded);
}
}

选项 2:在继承自 GridView 的类中或在 PageControl使用它,您可以自己检查 DataTable并创建一个显式 BoundColumn对于每列:

foreach (DataColumn column in dataTable.Columns)
{
GridViewColumn boundColumn = new BoundColumn
{
DataSource = column.ColumnName,
HeaderText = column.ColumnName,
HtmlEncode = false
};
gridView.Columns.Add(boundColumn);
}

关于asp.net - 防止在自动生成的 GridView 列中进行 HTML 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2168649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com