2010-09-16 15 views
5

Jakie są różnice w tych tagach?Wyrażanie kodu ASP.NET, powiązanie danych i inne deklaratywne wyrażenia ekspresowe

<% <% # <% = <% $

Co ważniejsze, w jaki sposób mogę wyświetlić właściwość stronę przy użyciu składni deklaratywnej w kontrolce ASP.NET? Próbuję to zrobić w formancie ASP.NET. Zadanie polega na ustawieniu tekstu etykiety, ale nie chcę tego robić pro gramalnie w przypadku, gdy chcę zmienić kontrolę wyjściową. Wystąpił błąd dotyczący elementów sterujących po stronie serwera, które nie mogą zawierać tej składni. Nie jestem pewien, że potrzebuję kontroli databound dla tego, co chcę zrobić, ale to jest inna opcja.

Nadchodzi odpowiedź częściowa.

Aktualizacja Jest nowy tag widziałem w ASP.NET 4.5? site

<%:

Odpowiedz

9

Częściowa odpowiedź

cytowany Mike Banavige

<%%> Wbudowany blok kodu jest kod serwer, który wykonuje podczas fazy renderowania strony. Kod w bloku może wykonywać instrukcje i wywoływać funkcje w bieżącej klasie strony. http://msdn2.microsoft.com/en-gb/library/ms178135(vs.80).aspx

<% =%> najbardziej przydatny do wyświetlania pojedynczych informacji w postaci . http://msdn2.microsoft.com/en-us/library/6dwsdcf5(VS.71).aspx

<% #%> Składnia wyrażeń wiążących dane. http://msdn2.microsoft.com/en-us/library/bda9bbfx.aspx

<% $%> Wyrażenie ASP.NET. http://msdn2.microsoft.com/en-us/library/d5bd1tad.aspx

<% @%> Składnia dyrektywy. http://msdn2.microsoft.com/en-us/library/xz702w3e(VS.80).aspx

<% - -%> Komentarze po stronie serwera. http://msdn2.microsoft.com/en-US/library/4acf8afk.aspx

Aktualizacja:

Dobrze wydaje się działać

<asp:Label ID="MyLabel" runat="server" Text='<%# MyProperty%>'></asp:Label> 

Jeśli używam składni eval następnie pojawia się błąd o kontroli z danymi lub używam <% wtedy dostaję błąd sterowania po stronie serwera. Bardziej doceniany kolor. Nie jestem pewien, czy naprawdę rozumiem, co się dzieje.

Być może ma to coś wspólnego z fazą renderowania.

Niewiele więcej obserwacje:

mogę używać <% = bez wiązania z danymi i uzyskać wartość nieruchomości, ale nie można go używać w kontroli po stronie serwera bez uzyskiwania błąd.

Jeśli używam <% # w kontrolce po stronie serwera, ale jestem zobowiązany do zrobienia strony.Databind.

Co ciekawe, mogę użyć wartości <% = lub <% #, gdy chcę renderować tekst, który nie znajduje się pod kontrolą. Chociaż to ostatnie wymaga wiązania z danymi.

Nowy <%: składni wyjaśniono, zwany także kodować fragment wyrażenia

z ASP.NET 4 przedstawiamy nową składni ekspresji kodu (<%: %>), które czyni produkcję jak < % =%> bloki - ale także automatycznie koduje je HTML przed wykonaniem tego.

http://weblogs.asp.net/scottgu/new-lt-gt-syntax-for-html-encoding-output-in-asp-net-4-and-asp-net-mvc-2

+0

Kolejny błąd: znacznik <%# %> musi być jedyną wartością w atrybucie znacznika asp.net. np., nie możesz mieć ... Text = "$ <% # x.Opcja%>" ... Musiałaby to być ... Text = "<% #" $ "+ x.Obliczenie%> "... – David

0

Nie, Kontrola po stronie serwera nie może. Na przykład mam właściwość string o nazwie SkinPath, która daje mi pełną ścieżkę App_Themes do bieżącego motywu. Używam go w następujący sposób:

<img src='<%= SkinPath %>/Images/myImage.png' /> 

Jednak dodaje nie działa:

<asp:Image ID='image' runat='server' ImageUrl='<%= SkinPath %>/Images/myImage.png' /> 

Zamiast tego renderuje srcdosłownie w wyniku <img>.

+0

Uaktualniłem swoją odpowiedź. Mogę użyć <% # i to działa dla databind do właściwości. Czy masz więcej wyjaśnień, dlaczego <% nie działa? Czy to dlatego, że działa sposób renderowania? –

+0

Curtis, miałem literówkę: Powinienem był umieścić <% = SkinPath%> i nie, nie mam żadnego powodu do tego. Przypominam sobie o jednym projekcie, zanim dostałem błąd, który został rozwiązany przez zmianę wszystkich <% = na <% #. Niektóre rzeczy poświęcasz czas, aby się dowiedzieć. Innym razem, robisz to i zarabiasz. :) – Brad

Powiązane problemy