Genellikle içerik üretmek için kod arkasında bir dize dönen korumalı bir işlev eklemek çözüm, içeriği bir Visat değeriyle bir runat = "sunucu" etiketinde sarmaktır, örneğin,
<div runat="server" Visible='<%# Eval("SaveDate") != DBNull.Value %>'>
do magic
</div>
div
herhangi bir HTML etiketi olabilir, ancak <asp:Panel>
ve <asp:PlaceHolder>
da kullanılabilir. "Sihir yapmak" ın hala veriye bağlı olduğunu unutmayın, bu yüzden eğer Eval("SaveDate") == DBNull.Value
ise bir hata oluşturabilecek pahalı kod veya kod içeriyorsa mükemmel bir çözüm değildir. Visible="false"
etiketi ve oluşturulan HTML tüm içeriğini ihmal edeceğini
Not, işte bu style="display:none"
veya style="visible:hidden"
çok farklıdır, bu yüzden bu konuda endişelenmeyin anlamına gelir.
Ama eğer senin makul karmaşık, başka oldukça basit bir çözüm (a kesmek biraz) olduğunu "sihirli yapmak": Bir Tekrarlayıcı kullanmak (veya FormView) bir öğenin bir dizi ayarlı onun DataSource ile (görünür) ya da hiçbir öğe (gizli):
<asp:Repeater runat="server" DataSource='<%# ElementIfTrue(Eval("SaveDate") != DBNull.Value) %>'
<ItemTemplate>
do magic
</ItemTemplate>
</asp:Repeater>
protected IEnumerable ElementIfTrue(bool condition)
{
if (condition)
return new object[] { Page.GetDataItem() };
else
return new object[0];
}
veri kaynağı dizinin asıl içeriğini ya boş (gizli) veya önceden bağlanma edildi öğesi. Bu, ItemTemplate içinde hala <%# Eval(...) %>
'u arayabilmenizi sağlar.
Bu yaklaşımla, "sihir yap" ifadeniz yalnızca DataSource bir veya daha fazla öğeye sahipse yürütülecek bir şablondur. Hangi ElementIfTrue
tarafından halledilir. Birazcık zihin bükücüsüdür, ama sizi her seferinde bir kez kurtarabilir.
Bir yan not olarak: "sihir" inizi bir kullanıcı denetimine yerleştirmek de karmaşıklığı düşük tutabilir. HTML/ASP.NET etiket karışımınızdaki bir şeyi değiştirmenize gerek yoktur (<%# Eval("...") %>
hala kullanıcı kontrolünde bile çalışır).
Bu kodu tekrarlayıcıda kullanıyorum, bu yüzden yer tutucuları veya arkadaki herhangi bir kimliğe sahip kimlikleri kullanamıyorum .. –
FYI: Ekranı kullanamıyorum: none, Google, gösterimde gizlenen metni dizine eklemez. Ben Visible kullanamazsınız = yanlış, bir tekrarlayıcı olarak ve ben kimlik kullanamam .. Ben sadece ifade kullanarak kullanarak gizleyebiliriz .. –
Visible, her sunucu tarafında kontrol bir özellik olabilir. Tekrarlayıcınızın içinde