2011-08-18 4 views
1

내 페이지에 공개 POCO 속성 (SiteDetail)을하고 난 서버 컨트롤의 속성을 설정할 때 가장 좋은 방법은 무엇을 알고 있어야합니다인라인 코드는

  1. 사용 인라인 코드와 페이지. DataBind(); 부하에

    <asp:Label ID="lbName" runat="server" Text="<%# SiteDetail.Name %>"/>

  2. 인라인 코드를 사용하고 부하에 Page.DataBind()를 사용하는 "위험"가 페이지로드

    lbName.Text = SiteDetail.Name;

에 컨트롤 속성을 설정하지 마십시오?

답변

0

에서 차이를 볼 수 없습니다 무하마드 악 타르는 두 가지가 같은 렌더링 말한다, 그래서 지금은

<asp:Label ID="lbName" runat="server" Text="<%# SiteDetail.Name %>"/> 

뒤에 코드가, 그것이 명확하게 보이기 때문에 인라인 코드를 사용하는 것을 선호 :

을 10
+0

호출 한 곳에서 참조를 제공 할 수 있습니까, Page.DataBind() 좋지 않아? –

+0

틀림없이 여기 http://aspalliance.com/1533_ASPNET_Performance_Tips.14 – Milox

+0

입니다. Page.DataBind() 메서드를 호출하는 것이 문제지만, 다시 databind 메서드 레이블을 레이블로 호출하면 다시 패닉이 발생합니다. 이런 방식으로 바인드 한 다음 databind 메소드를 호출해야합니다. 그러나 코드 뒤에 텍스트 속성을 할당하면 한 곳에서해야하며 코드가 더 읽기 쉽고 잘못 될 가능성이 적습니다. –

1

렌더링 된 소스를 보았습니까? 전혀 차이가 없습니다. 두 레이블 모두 범위에서 텍스트를 렌더링합니다. 간단한 테스트 만하면됩니다. 여기

내가 아래 소스를 생성하는 테스트 여기

<asp:Label ID="Label1" runat="server" Text='<%#test %>'></asp:Label> 
<asp:Label ID="Label2" runat="server"></asp:Label> 

위해 가지고 것입니다.

<span id="Label1">this text is from binding expression</span> 
<span id="Label2"><br/>this text set from code behind</span> 

당신은 @로, 당신이 필요로하는 모든 단일 제어에 DabaBind를 호출하는 것이 좋습니다, 좀 더 많은 연구를하고 Page.DataBind() 좋은 일이 아니다 발견 ... 그래서 모든

+0

네, 같은 렌더링입니다, 내게 더 명확 해 보이는 것처럼 인라인 코드를 사용하는 것을 선호합니다. 아래 답변을 참조하십시오.) – Milox