Как установить свойство элемента управления ASP.NET с помощью оператора IIf - PullRequest
0 голосов
/ 29 февраля 2012

Я не уверен, изменились ли вещи после .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 голосов
/ 29 февраля 2012

<%# указывает, что вы привязываете данные к элементу управления / странице.Так что либо вы делаете

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

0 голосов
/ 29 февраля 2012

Вы можете использовать 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

...