如何通过IIf语句设置ASP.NET控件属性

时间:2012-02-28 21:28:13

标签: asp.net code-behind

我不确定.NET 2.0之后是否有变化,因为在.NET 2.0中,我曾经能够设置这样的东西:

<asp:Panel runat="server" Visible='<%#IIf(Some condition here, "true", "false") %>' />

我一直这样做,以便有一个干净的代码。

目前我正在使用.NET 3.0,但我无法让我的生活得以实现。我正在评估的条件是不访问任何数据绑定字段,但就像在后面的代码中检查对象的属性一样简单。   任何人都可以建议这个内联代码应该如何看待?

UPDATE:

这是我想要做的一个例子。我发誓这样的东西曾经在.NET 2.0中工作,但它现在不起作用了:

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0               Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>
    <script runat="server">
        protected bool IsValid() { return true; }       
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label Text="123" runat="server" Visible=<%#iif(IsValid(), "true", "false")%>/>
    </div>
    </form>
</body>
</html>

2 个答案:

答案 0 :(得分:0)

您可以在标记中使用VB,在代码隐藏中使用C#

<%@ Page Language="VB"

当然...... Visual Studio变得疯狂

<%@ Page Language="VB" AutoEventWireup="true" CodeBehind="WebForm6.aspx.cs" Inherits="WebApplication1.WebForm6" %>

<asp:repeater id="rpt" runat="server">
        <ItemTemplate>
            <br />
            <%# Container.DataItem %>
            <br />
            <%#IIf( CType(Container.DataItem, System.Int32) > 5 = 0, "true", "false") %>
            <br />
            <br />
        </ItemTemplate>
    </asp:repeater>

和C#代码隐藏在

之后
using System.Linq;
namespace WebApplication1
{
    public partial class WebForm6 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {           
            rpt.DataSource = Enumerable.Range(1, 29);
            rpt.DataBind();
        }
    }
}

VS对此有什么看法

enter image description here

答案 1 :(得分:0)

<%#表示您对控件/页面进行了数据绑定。所以要么你做

Private Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
    Me.DataBind()
End Sub

或者你完全在代码隐藏中完成(我更喜欢):

Private Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
    MyPanel.Visble = YourCondition
End Sub

http://naspinski.net/post/inline-aspnet-tags-sorting-them-all-out-%283c25242c-3c253d2c-3c252c-3c252c-etc%29.aspx