2009-03-03 13 views
1

İşte elde etmeye çalıştığım şeyin basitleştirilmiş bir örneğidir;<% # isChecked%> ifadesini kullanarak bir onay kutusu belirleme

<asp:CheckBox runat="server" Checked="<%# this.isChecked %>" id="myCheckBox" /> 

Ardından kodumun arkasında;

public partial class _Default : System.Web.UI.Page 
{ 
    bool _isChecked = true; 

    public string isChecked 
    { 
     get 
     { 
      return _isChecked.ToString(); 
     } 
    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
    } 
} 

ben bu durumda, ben sadece myCheckBox.Checked = true kullanabilirsiniz farkındayım, ama sadece örnek amacıyla bu örneği kullanıyorum. Gerçek kontrol özeldir, ama bu yaklaşımı işe almak için hiç şansım yok. Sadece sağladığım değeri görmezden geliyor gibi görünüyor.

Bu şekilde <% # this.isChecked%> kullanmak geçerli midir?

DÜZENLEME:

Üzgünüm, acele yazdım ve ben sadece bir örnek olması için "onay kutusunu" amaçlanan bu gerçekten net değil biliyoruz. Sadece kontrol kutusu denetiminin "işaretli" özniteliği değil, ASP denetiminin herhangi bir özel özniteliğine bir sunucu tarafı boole almaya çalışıyorum.

DÜZENLEME 2: Boole alanı yerine dize özelliğini kullanmak benim örnek güncellendi, ancak şimdi benim ASPX dosyasında aşağıdaki hatayı bildiriyor; Eğer (HTML) o kontrol edilecektir

checked="anything" 

sağlarsanız

'bool'

cevap

3

tip 'dizesini' dönüştürülemez. Kontrol edilmemesi için kontrol edilen özniteliği çıkarmanız gerekir, bu nedenle çalışmaz. Ben, aspx sayfa özelliğini ayarlamak için ziyade ben kimliğini kullanmak ve kodda yapmak denemek olmaz

: soruya düzenlemek sonra


, işte güncellenmiş cevaptır. Örn.,

örn. geride

<asp:Control ID="uxMyControl" runat="server" attributes="other"... /> 

Kod: Bunun yerine dize (tiplemeleri sorunu) daha bool dönen Hayır, çünkü sen veri bağlama ifadesi ile çalışmak için bir özellik yerine bir alan ihtiyaç

private Boolean mypropery = false; 

Page_Load(object sender, EventArgs e) 
{ 
    this.myproperty = true; 
    uxMyControl.attributes = myproperty; 
} 
+0

Başlangıçta yaptığım şey budur, ancak üst sayfa için Page_Load öncesi denetimin gerçekleştirilmesi nedeniyle, öznitelik çok geç ayarlanır ve denetim, özniteliğin varsayılan değerine göre oluşturulur; Page_Load içinde bir set. –

+0

Denetim, bu noktada tam olarak oluşturulmamalı, ancak denetimin Page_load'ını düzenlemeyi denediniz mi? Ya da Page_PreInit kullanıyor musunuz? – cjk

+0

'Checked', bu durumda bir sunucu denetiminde bir boolean özelliğidir, bir html özniteliği değil. Oluşturma, sunucu denetimi tarafından ele alınır. –

2

, ve bazı tarayıcılar onay kutunuzu "true/false" sözcükleriyle doğru bir şekilde göstermez. Bunun yerine, kutuyu işaretlemek için checked="checked" numaralı telefonu veya kontrol etmek için bir şey görmeyi beklerler.

Düzenlemenize bağlı olarak, isChecked boolean'ı ayarlamaya çalışan başka bir yerde kodunuz olduğundan şüpheleniyorum. Kod, isChecked adının bunun yerine bir string özelliğine işaret ettiğini şimdi başarısız oluyor. _isChecked öğesini ayarlamak için güncelleyin.

+0

Bir bool alanından bir string özelliğine geçtim, ancak şimdi .aspx dosyasında "Type 'string' türünü 'bool' olarak değiştiremiyorum. İpin neden kabul edilmediğine dair bir fikrin var mı? –

+0

Birkaç fikir, ancak hangisinin doğru olduğunu bilmenin en basit yolu, sorunuzu yeni kodu gösterecek şekilde düzenliyor olmanızdır. –

+0

Orijinal soru güncellenmiş kodla güncellendi –