【发布时间】:2016-12-22 08:44:02
【问题描述】:
所以我的数据库中有一个 bool 列,说明访问者是否为“内部”。如果值为true,我希望img src 为:const string checkedIn = "/Images/Icons/Visitor-checkedin-16x16.png"; 如果false,我希望它是另一个src。此外,如果访客尚未访问,“Inhouse”应该是false 并且“expectedArrival”日期还没有。这是我的代码:
C#:
public string GetImageUrl(string inhouse, DateTime expectedArrival)
{
const string checkedIn = "/Images/Icons/Visitor-checkedin-16x16.png";
const string checkedOut = "/Images/Icons/Visitor-checkedout-16x16.png";
const string notArrived = "/Images/Icons/Visitor-notarrived-16x16.png";
if (ToBool(inhouse))
{
inhouse = checkedIn;
}
else if (ToBool(inhouse) == false && expectedArrival.AddDays(0) <= DateTime.Now)
{
inhouse = notArrived;
}
else
{
inhouse = checkedOut;
}
return inhouse;
}
private static bool ToBool(string value, bool defaultValue = false)
{
bool result;
return bool.TryParse(value, out result)
? result
: defaultValue;
}
ASPX:
<asp:Repeater runat="server" OnItemDataBound="rptVisitedItem_OnItemDataBound" OnItemCommand="rptVisitedItem_OnItemCommand" ID="rptVisitedItem">
<ItemTemplate>
<tr>
<td>
<img src='<%# GetImageUrl(Eval("Inhouse").ToString(), Convert.ToDateTime(Eval("ExpectedArrival"))) %>'alt="" class="statusIcon" />
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
我哪里做错了?我只得到一张图片来显示 atm。
【问题讨论】:
-
为什么要将 Inhouse 转换为字符串,然后将其转换回布尔值?这是没有意义的,并且可能是错误的来源。其次,您正在滥用内部变量 - 同时用作(布尔)输入和(字符串)输出。使用单独的变量 - 没有理由不这样做,这是一种令人困惑的编码方式。
-
你能发个帖子用代码告诉我你的意思吗?
-
你应该调试你的代码(例如console.writeline,....),我想这与显示图像无关,而是你在GetImageUrl中的逻辑