IQueryable中的HtmlEncode字符串,无需更改绑定数据

时间:2009-04-04 07:05:30

标签: c# asp.net linq-to-sql data-binding iqueryable

我将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();

4 个答案:

答案 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。