2009-04-04 5 views
1

Ich bin ein ASP.NET-Steuerelement an das Ergebnis einer LINQ-Abfrage binden. Ich möchte HtmlEncoding eine der Eigenschaften der enthaltenen Objekte vor der Bindung an das Steuerelement, aber ich möchte es tun, ohne die Daten zu ändern, weil ich eine DataContext.SubmitChanges() später. Wie kann das gemacht werden?HtmlEncode Zeichenfolge in IQueryable ohne gebundene Daten zu ändern

-Code, die nicht funktionieren:

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

Antwort

0

Dummy mich. Ich muss es nur HtmlEncoding innerhalb des OnItemDataBound() Ereignisses.

+0

Das würde auch funktionieren ... – bytebender

0

haben zwei Kopien der Daten:

from s in dc.SearchResults 
orderby s.datetime descending 
select new { 
    Original = s, 
    Encoded = Server.HtmlEncode(s.Query) 
}; 
2

Ihr könnte es codieren, wenn Sie Ihre tun Bindung ...

<asp:YourDataBoundControl> 
    <ItemTemplate> 
     Query: <span><%# Server.HtmlEncode((string)Eval("Query")) %></span> 
    </ItemTemplate> 
</asp:YourDataBoundControl> 
0

Oder Sie könnten verwenden HttpUtility.HtmlEncode ('string');

Beide sind gültig, aber die obige ist überall in einer Anwendung einfacher als das Laden von HttpContext.Current.Server.HtmlEncode.