我不确定.NET 2.0之后是否有变化,因为在.NET 2.0中,我曾经能够设置这样的东西:
<asp:Panel runat="server" Visible='<%#IIf(Some condition here, "true", "false") %>' />
我一直这样做,以便有一个干净的代码。
目前我正在使用.NET 3.0,但我无法让我的生活得以实现。我正在评估的条件是不访问任何数据绑定字段,但就像在后面的代码中检查对象的属性一样简单。 任何人都可以建议这个内联代码应该如何看待?
这是我想要做的一个例子。我发誓这样的东西曾经在.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>
答案 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对此有什么看法
答案 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