您的位置:首页> 日志> 动易系统 正文

  在目前的SiteAzure1.4系统中,系统默认提供的广告版位读取方法中缺少了显示数量的限制,但很多时候我们在输出时为了保证前台显示不错位,往往都会限制显示数量,没有这个参数确实不方便,那么有没有解决办法?答案是:有的!

 

方法一:使用Razor的条件语句来实现

 

  SiteAzure所使用的视图引擎是“Razor”,那么我们可以利用 Razor 的代码来进行限制,具体方法如下:

  首先,我们要建立一下变量

int Count = Param.Count ?? 5; // 输出数量

 

  由于默认就有两个index自增的值,所以就不用再建了,直接利用它就要以了。

  然后,我们在对应的循环体内通过 if 来判断是否输出内容,要注意的是,视图里面使用了两处循环,所以这里不能用 return,不然另外一个循环就出不来了; 

if的添加方法参考上图就可以了,这个就不用解释

 

方法二:使用SQL语句来实现

 

  在SiteAzure的视图里,我们可以通过 DbSet.SqlQuery 方法来写入数据库语法,考虑到了SQL注漏洞的安全问题,视图文件中建议尽量少用此方法。

首先,和方法一一样,建立 Count 变量。

 

把原来的

var advertisements = new AdvertisementService().GetAdvertisementsBySpaceId(advertisementSpaceId, Sort);

改为

var advertisements = new AdvertisementService().DbSet.SqlQuery("select top " + Count +" * from PE_Advertising_Advertisement AA left join PE_Advertising_AdvertisementAdvertisementSpace AAAS on AA.AdvertisementId = AAAS.AdvertisementId where AdvertisementSpaceId = " + advertisementSpaceId + " and SiteId = " + SiteContext.Current.SiteId);

 

(如果想保留原来的 advertisements  ,把这段代码注释掉也行)

 

然后,就没然后了...(对就这么简单)