2009-04-04 3 views
1

LINQ 쿼리의 결과에 ASP.NET 컨트롤을 바인딩하고 있습니다. 컨트롤에 바인딩하기 전에 포함 된 개체의 속성 중 하나를 HtmlEncode하고 싶습니다. 그러나 나중에 DataContext.SubmitChanges()를 수행하기 때문에 데이터를 변경하지 않고이 작업을 수행하려고합니다. 어떻게 할 수 있습니까? 동작하지 않습니다바인딩 된 데이터를 변경하지 않고 IQueryable 내의 HtmlEncode 문자열

코드 :

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

더미 나. OnItemDataBound() 이벤트 내에서 HtmlEncode해야합니다.

+0

잘 작동 할 것입니다 ... – bytebender

0

두 데이터의 사본 유무 :

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

당신이 당신의 바인딩을 수행 할 때 당신이 그것을 인코딩 할 수 ...

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

아니면 HttpUtility.HtmlEncode ('문자열')를 사용할 수를;

두 가지 모두 유효하지만 위의 코드는 HttpContext.Current.Server.HtmlEncode를로드하는 것보다 응용 프로그램 내에서 쉽게 사용할 수 있습니다.

관련 문제