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)
非常感谢
我建议将每个键/值对包装到具有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)
这将是一个非常主观的,因为它完全取决于你喜欢处理空值/空值的位置和方式,以及你正在处理的那两个中的哪一个.
例如,有些人喜欢在数据库级别处理空值,有些人喜欢在业务逻辑层中编写默认值,而有些人喜欢在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)
这样至少用户知道没有数据可用,而不是不知道是否存在某些系统/管理错误.
希望有帮助:)
| 归档时间: |
|
| 查看次数: |
29608 次 |
| 最近记录: |