ASP.net页面中的条件逻辑

Vid*_*dar 8 c# asp.net conditional

我有一些代码将数据库值打印到asp.net页面上的转发器控件中.但是,返回的某些值为null/blank - 这会使得当有空格时结果看起来很难看.

你如何在asp.net控件中执行条件逻辑,即如果存在值则打印出一个值,否则只需转到下一个值.

我还应该添加 - 我希望标记也是有条件的,好像没有值我也不想要
标记.

下面是一段代码,仅显示我从数据库中获取的值的类型.(地址2通常没有值).

<div id="results">
    <asp:Repeater ID="repeaterResults" runat="server">
        <ItemTemplate>
             Company:      <strong><%#Eval("CompanyName") %></strong><br />
             Contact Name: <strong><%#Eval("ContactName") %></strong><br />
             Address:      <strong><%#Eval("Address1")%></strong><br />                    
                           <strong><%#Eval("Address2")%></strong><br />..................
Run Code Online (Sandbox Code Playgroud)

非常感谢

Iha*_*tka 8

我建议将每个键/值对包装到具有2个属性的自定义控件中.仅当值不为空时,此控件才会显示自身:

 <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ShowPair.ascx.cs" Inherits="MyWA.ShowPair" %>

<% if (!string.IsNullOrEmpty(Value))
   { %>
<%=Key %> : <%=Value %>
<% } %> 
Run Code Online (Sandbox Code Playgroud)

然后将控件放入转发器模板:

<asp:Repeater runat='server' ID="repeater1">
     <ItemTemplate>
        <cst:ShowPair Key="Company Name:" Value="<%#((Company)Container.DataItem).CompanyName %>" runat="server"/>
        <cst:ShowPair Key="Contact Name:" Value="<%#((Company)Container.DataItem).ContactName %>" runat="server" />
        <cst:ShowPair Key="Address 1:" Value="<%#((Company)Container.DataItem).Address1 %>" runat="server" />
     </ItemTemplate>
    </asp:Repeater>
Run Code Online (Sandbox Code Playgroud)


Mat*_*ard 6

这将是一个非常主观的,因为它完全取决于你喜欢处理空值/空值的位置和方式,以及你正在处理的那两个中的哪一个.

例如,有些人喜欢在数据库级别处理空值,有些人喜欢在业务逻辑层中编写默认值,而有些人喜欢在UI处理默认值/空白值 - 更不用说介于两者之间的多种选项了.

无论哪种方式,我个人的选择是确保您在UI级别显示该字段没有可用数据以避免混淆.最糟糕的是:

<strong><% If (Eval("Address2").Length > 0) Then %><%#Eval("Address2")%><% Else %>No data available for Address 2<% End If %></strong><br />
Run Code Online (Sandbox Code Playgroud)

这样至少用户知道没有数据可用,而不是不知道是否存在某些系统/管理错误.

希望有帮助:)