在C#asp.net中进行评估

时间:2011-09-05 11:42:28

标签: c# asp.net

我在放置在绑定到对象数据源的数据列表中的内容占位符中有动态内容。问题是我需要检查EVAL的值。这是代码:

<asp:DataList ID="DataList1" runat="server" CellPadding="4" 
                DataSourceID="ObjectDataSource1" ForeColor="#333333">
                <AlternatingItemStyle BackColor="White" />
                <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                <ItemStyle BackColor="#EFF3FB" />
                <ItemTemplate>


                    <a href="<%# Eval("VendorLink") %>"> <%# Eval("Vendor") %></a>
                    <br />
                    <a href="<%#    Eval("TitleLink") %> "><%# Eval("Title") %></a>
                    <br />
                    <asp:Label ID="DescLabel" runat="server" Text='<%# Eval("Desc") %>' />
                    <br />
                    <asp:Label ID="DetailsLabel" runat="server" Text='<%# Eval("Details") %>' />
                    <br />
                    <asp:Label ID="RptIDLabel" runat="server" Text='<%# Eval("RptID") %>' />
                    <br />

                    <asp:Label ID="LinksLabel" runat="server" Text='<%# Eval("Links") %>' />
                    <br />
                    <br />

                </ItemTemplate>
                <SelectedItemStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
            </asp:DataList>

我想说

<%if(Eval("RptID") =="SomeString") { Eval("rtpid") = "Pass");}%>

我需要检查是在aspx页面而不是aspx.cs页面!如何进行检查?

5 个答案:

答案 0 :(得分:7)

你可以这样做:

<%# (Eval("UserName") == "Test 1") ? "no.png" : "yes.gif" %>

答案 1 :(得分:4)

您可以查看如下:

<%# Eval("VenderLink") == "somestring" ? "p %>

答案 2 :(得分:3)

试试这个,

<%# string.Compare(Eval("RptID").ToString(), "SomeString") == 0 ? Eval("RptID") : "Nothing" %>

答案 3 :(得分:2)

你需要用单引号包装你的表达式,否则它是无效的SGML。解析器认为该属性在第二个"上结束。

<a href='<%# Eval("VendorLink") %>'> <%# Eval("Vendor") %></a>

您不能在绑定上下文中使用IF构造,只能使用绑定表达式。您总是可以挂钩ItemDataBound并将您的逻辑放在服务器端(或将其移动到代码隐藏中的方法)。

protected void repeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{       
        var descLabel= e.Item.FindControl("RptIDLabel") as Label;
        var data = (MyDataType)e.Item.DataItem; 
        if (data.RptID == "SomeString")
        {
           descLabel.Text = "Pass";
        }
        ...       
}

答案 4 :(得分:2)

Eval("RptID")这是一个功能,所以你不能做Eval("rtpid") =“某事”;

如果你需要编写逻辑,你总是可以在后面的代码中创建一个受保护的或公共的函数,它将返回你需要的字符串。

你可以像这样调用这个函数

<%# TransformString(Eval("RptID")) %>

和后面代码中的函数

protected string TransformString(object rptid)
{
     //some code goes here
}