2009-04-04 4 views
1

Je lie un contrôle ASP.NET au résultat d'une requête LINQ. Je voudrais HtmlEncode une des propriétés des objets contenus avant de se lier au contrôle, mais je veux le faire sans altérer les données car je fais un DataContext.SubmitChanges() plus tard. Comment cela peut-il être fait?Chaîne HtmlEncode dans IQueryable sans modification des données liées

Code qui ne fonctionne pas:

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

Répondre

0

me Dummy. J'ai juste besoin de HtmlEncode dans l'événement OnItemDataBound().

+0

Cela fonctionnerait aussi bien ... – bytebender

0

deux copies des données:

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

Votre pourrait encoder quand vous faites votre ... la liaison

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

Ou vous pouvez utiliser HttpUtility.HtmlEncode ('string');

Les deux sont valides, mais celui ci-dessus est disponible partout dans une application plus facile que de charger HttpContext.Current.Server.HtmlEncode.

Questions connexes