2013-09-23 8 views
24

Aşağıdaki bildirim kodu vardır: sabit TEXTBOX_CSS_CLASS bir üs tanımlanırWeb hata mesajı Forms: "Bu komut dosyası uygulamacığı değil düz metin olarak çıktı olacak" benim ASP .NET Web Forms'da

<asp:TextBox runat="server" ID="txtbox" CssClass='<%=TEXTBOX_CSS_CLASS%>' /> 

düzenlemek zamanlı derleyici ancak "Bu [sic] komut dosyası uygulamacığı değil düz metin olarak Will çıktı" beni uyarıyor

public class MyPageBase : Page 
{ 
    protected internal const string TEXTBOX_CSS_CLASS = "myClass"; 
} 

: sayfanın arka planda kodlama sınıfından miras sınıfı. Kelimesine göre, css sınıfı tam anlamıyla "<% = TEXTBOX_CSS_CLASS%>" olarak işlenir.

Bu hata iletisi ne anlama geliyor ve bir geçici çözüm var mı? Bu yüzden bir temel sınıfta hala sabit kullanabilir miyim?

cevap

27

üzerinde asp:TextBox ait CssClass özelliğine erişmek için yukarı sunucu tarafı denetimleri. Satır içi ifadeler <% %> yalnızca aspx sayfasında veya kullanıcı denetiminin üst belge düzeyinde kullanılabilir, ancak sunucu denetiminin etiket özniteliğinde (<asp:Button... Text =<% %> ..> gibi) gömülmez.

Eğer TextBox'ınız GridView, ListView .. gibi bir DataBound denetiminin içinde ise, <%# %> sözdizimini kullanabilirsiniz. VEYA kod üzerinde veya satır içi sunucu komut dosyasındaki denetimde açıkça DataBind()'u arayabilirsiniz. dosyanın arkasında

<asp:TextBox runat="server" ID="txtbox" class='<%# TEXTBOX_CSS_CLASS %>' /> 

// kod

protected void Page_Load(object sender, EventArgs e) 
{  
     txtbox.DataBind(); 
} 

ASP.NET içeren birkaç yerleşik ifade inşaatçılar size özel uygulama ayarları ve web.config dosyadan bağlantı dizesi bilgileri ayıklamak için izin verdiğini. Örnek: web.config dosyanın <appSettings> kısmından className adında bir uygulama ayarı almak istiyorsanız

  • Kaynaklar
  • connectionStrings
  • AppSettings'i

Yani, aşağıdaki ifadeyi kullanabilirsiniz :

<asp:TextBox runat="server" Text="<%$ AppSettings:className %>" /> 

Ancak, yukarıdaki kod parçacığı Appsettings'ten sınıfları okumak için bir standart değildir.

Sen kurmak ve kendi Custom ExpressionBuilders ya kullanabileceği veya arkasında kodu kullanın edebilirsiniz: Özel İfade inşaatçılar oluşturmaya

txtbox.CssClass = TEXTBOX_CSS_CLASS; 

Check this link. Burada

<asp:TextBox Text="<%$ SetValue:SomeParamName %>" 
    ID="setting" 
    runat="server" /> 
14

Sorun, denetimlerini <%= .. %> kod bloklarıyla karıştıramayacağınızdır. Doğru şekilde kod kullanmak: txtbox.CssClass = TEXTBOX_CSS_CLASS;.

7

Bu işe yarayacaktır.

Mark

<asp:TextBox runat="server" ID="txtbox" class='<%# TEXTBOX_CSS_CLASS %>' /> 

kod arkadaki

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     txtbox.DataBind(); 
    } 
} 

Ama çok daha temiz Sen özelliklerini ayarlamak için <%= ... %> kullanamazsınız Page_Load

+0

: Eğer özel İfade inşa sonra sizin gibi değerini görüntüleyebilir? – spankmaster79

+1

@ spankmaster79: Sadece ayrıntılı bir açıklama için yukarıdaki cevabı okuyun. – naveen

İlgili konular