我将ASP.NET控件绑定到LINQ查询的结果。在绑定到控件之前,我想HtmlEncode包含对象的一个属性,但是我想在不改变数据的情况下这样做,因为我稍后会执行DataContext.SubmitChanges()。怎么办呢?
不起作用的代码:
var ds = (from s in dc.SearchResults
orderby s.datetime descending
select s)
.Take(int.Parse(ConfigurationManager.AppSettings["RecentItemQty"]));
foreach (SearchResult sr in ds)
sr.Query = Server.HtmlEncode(sr.Query);
rSearches.DataSource = ds;
rSearches.DataBind();
答案 0 :(得分:2)
你可以在绑定时对其进行编码......
<asp:YourDataBoundControl>
<ItemTemplate>
Query: <span><%# Server.HtmlEncode((string)Eval("Query")) %></span>
</ItemTemplate>
</asp:YourDataBoundControl>
答案 1 :(得分:0)
假的我。我只需要在OnItemDataBound()事件中对它进行HtmlEncode。
答案 2 :(得分:0)
有两份数据副本:
from s in dc.SearchResults
orderby s.datetime descending
select new {
Original = s,
Encoded = Server.HtmlEncode(s.Query)
};
答案 3 :(得分:0)
或者您可以使用HttpUtility.HtmlEncode('string');
两者都有效,但上面的一个在应用程序中的任何地方都可用,而不是加载HttpContext.Current.Server.HtmlEncode。