求一个判断显示广告的思路

phuai007 2011-01-07 12:47:20
控件数据绑定,判断是否到期,没到期就显示广告,到期了就显示默认

我的思路是这样的,但有问题,前台:


<asp:Repeater ID="img_ad_long" runat="server">
<ItemTemplate>
<% if (daoqi(Eval("last_time").ToString()) == true) 这里判断是否到期
{ %>
<div class="long_ad"><a href="<%#Eval("link") %>" target="_blank"><img class="short_ad_amg" src="<%#Eval("path") %>" alt="<%#Eval("title") %>">"/></a></div>
<%}
else
{%>
<div class="long_ad"><img class="long_ad_amg" src="/images/long_ad.jpg" alt="此广告位空闲" title="长图片广告位<%#Eval("nunber")%>" /></div>
<%} %>
</ItemTemplate>
</asp:Repeater>



后台代码:


private void img_ad()
{
conn reader = new conn();
String sql = "Select nunber,title,link,path,last_time from img_ad where type = 0";
DataSet ds = reader.DataSets(sql);
this.img_ad_long.DataSource = ds.Tables[0];
this.img_ad_long.DataBind();

}

protected void Page_Load(object sender, EventArgs e)
{
this.img_ad();
}
/// <summary>
/// 检查广告是否到期,没到期返回true,到期返false
/// </summary>
/// <param name="time">到期的时间</param>
/// <returns></returns>
protected bool daoqi(String time)
{
DateTime nowtime = DateTime.Now;
DateTime last_time = Convert.ToDateTime(time);
if (DateTime.Compare(nowtime, last_time) < 0)
{
return true;
}
else
{
return false;
}
}


求更好的方法...
...全文
111 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
phuai007 2011-01-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jinkuang45 的回复:]
方法没问题啊
[/Quote]

那样写有问题,提示“Eval()、XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用”
子夜__ 2011-01-07
  • 打赏
  • 举报
回复
这种方法就可以了。
还有就是可以把Eval("last_time").ToString();在后台用一个字段来代替。
这样前台看起来轻松一些。
另外用三元运算符也可以

String Str=daoqi(Eval("last_time").ToString()) == true?“<div class="long_ad"><a href="<%#Eval("link") %>" target="_blank"><img class="short_ad_amg" src="<%#Eval("path") %>" alt="<%#Eval("title") %>">"/></a></div>”:“<div class="long_ad"><img class="long_ad_amg" src="/images/long_ad.jpg" alt="此广告位空闲" title="长图片广告位<%#Eval("nunber")%>" /></div>";

前台直接<%=str%>
这种也可以。

冰川711 2011-01-07
  • 打赏
  • 举报
回复
方法没问题啊
phuai007 2011-01-07
  • 打赏
  • 举报
回复
原来是放到前台,问题解决了

<div class="long_ad"><%#daoqi(Eval("last_time").ToString()) == true ? "<a href='"+Eval("link")+"'target='blank'><img class='short_ad_amg' src='"+Eval("path")+"' alt='"+Eval("title") +"'/></a></div>" : "<div class='long_ad'><img class='long_ad_amg' src='/images/long_ad.jpg' alt='此广告位空闲' title='长图片广告位"+Eval("nunber")+"'/></div>"
%></div>
phuai007 2011-01-07
  • 打赏
  • 举报
回复
我前台先没有调用,断点跟踪,发现还是提示“Eval()、XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用”

phuai007 2011-01-07
  • 打赏
  • 举报
回复
我按照上面的做了,但是前台运行出错,说当前上下文中找不到Str,我把三元放到Page_Load里了,放外面也同样问题
雨网科技 2011-01-07
  • 打赏
  • 举报
回复
<%# 这里是你的方法(Eval("last_time"))?"这里img(就是现实IMG的控件链接都已字符的形式输出,img的变量一样可以绑定)如,<a href="+Eval("变量")+"/> <img src="+变量:"过期的img"%> 上面的一括号弄错了 ,反正就是三元运算符 语法
雨网科技 2011-01-07
  • 打赏
  • 举报
回复
给你打个比方

<%# 这里是你的方法(Eval("last_time")?"这里img(就是现实IMG的控件链接都已字符的形式输出,img的变量一样可以绑定)如,<a href="+Eval("变量")+"/> <img src="+变量:"过期的img")%>
雨网科技 2011-01-07
  • 打赏
  • 举报
回复
最好的方法 三元运算符

"><a href="<%#Eval("link") %>" target="_blank"><img class="short_ad_amg" src="<%#Eval("path") %>" alt="<%#Eval("title") %>">"/></a

像这些东西都已三元运算符里面的字符串形式输出就可以了

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧