渲染<而不是<在ASP.NET中

时间:2008-11-14 18:54:57

标签: asp.net escaping

我正在写一个小页面来展示我们公司的员工。我写了一个查询来从我们的数据库中提取信息。然后我将它绑定到GridView来执行脏工作。这是查询。

"SELECT tblEmpID.empid AS [Empl ID], tblEmpID.posno AS [Pos #], [name] & ""<br />""  &   [jcn] & ""("" & [jcc] & "")"" AS [Name/Job], [orgno] & "" - "" & [depname] AS Department, tblEmpID.[status] AS Status " & _
        "FROM tblEmpID " & _
        "ORDER BY [orgno] & "" - "" & [depname], tblEmpID.name "

正如您所看到的,我正在尝试在SQL中包含一个内容,因此当它呈现时它将如下所示:

Name
Job Description

但是当它渲染时它呈现为

&lt; and &gt;

有效地显示&lt; br /&gt;在记录中而不是像我想要的那样格式化它。

那么如何让它像我想要的那样渲染?我已经尝试过逃避&lt;与\并没有用。


编辑:谢谢gfrizzle。你的答案让我走上了正确的道路。还有,谢谢NYSystemsAnalyst。你的回答让我想到了将来做事的另一种方式。最终,我发现了一个不同的解决方案。我将此代码放在GridView1_RowDataBound事件中,它可以满足我的需要。

If e.Row.RowType = DataControlRowType.DataRow Then
        Dim cells As TableCellCollection = e.Row.Cells

        For Each cell As TableCell In cells
            cell.Text = Server.HtmlDecode(cell.Text)
        Next
    End If

2 个答案:

答案 0 :(得分:1)

尝试在GridView中的列上设置HtmlEncode =“False”。这应该阻止它对你的标记进行编码。

答案 1 :(得分:0)

如果您出于只读目的这样做,您可能需要考虑使用转发器控件。然后,您可以将它们作为单独的字段返回,从而从SQL结果集中删除HTML。然后,您可以使用控件中的ItemTemplate指定HTML以及您希望结果显示的确切方式。您可以将它们放在表格中,并使用BR标签。这看起来类似于网格,但可以让您更好地控制HTML / .aspx端的布局。