ASP.NET/Linq-如何在Linq查询中转义HTML字符

本文关键字:查询 转义 HTML 字符 Linq NET Linq- ASP | 更新日期: 2023-09-27 18:29:43

我有这个Linq查询:

from depot in Depots
where depot.DepotTypeId == id
select new
{
DepotId = depot.DepotId,
GpsLatitude = depot.GpsLatitude,
GpsLongitude = depot.GpsLongitude,
locationName = depot.DepotName
}

这很好,但locationName可以包含像"answers"这样的字符。这很糟糕,因为我需要HTML5数据属性中的变量。额外的字符会破坏我的HTML语法。所以我尝试了这个:

locationName = HttpUtility.HtmlEncode(depot.DepotName)

但这会返回错误:

LINQ to Entities无法识别方法"System.String"HtmlEncode(System.String)'方法,而此方法不能是翻译成商店表达式。

我做错了什么?

ASP.NET/Linq-如何在Linq查询中转义HTML字符

这里的主要问题是HtmlEncode方法无法转换为SQL,您需要做的是在选择之前评估LINQ查询(即从数据库中提取数据):

Depots
    .Where(d => d.DepotTypeId == id)
    .AsEnumerable()
    .Select(d => new {
        DepotId = d.DepotId,
        GpsLatitude = d.GpsLatitude,
        GpsLongitude = d.GpsLongitude,
        LocationName = HttpUtility.HtmlEncode(d.DepotName)
    });