一直有个问题没有解决。
有一个专题表,字段如下: SpecialID,Title,Keywords,Description,ImgIcon等字段,
然后我有一个前台页面special.aspx,然后在访问不同专题时带上专题ID,如special.aspx?id=1,显示专题ID为1的信息。
现在我碰到一个问题,那就是目前所有的专题模板都是同一个,没有个性,因为是访问同一个special.aspx页面,所以只是其中的数据不一样,而模板都长一个样。
而我想实现的功能是当访问special.aspx?id=1时,用专题ID为1的的专用模板,访问special.aspx?id=2时用专题ID为2的专有模板,这样的话内容形式就多彩多样了。
大侠说说实现的思路。
希望有人解决一下。
第一种方法是页面DIV布局,通过传来的不同参数,动态加载CSS文件,来改变页面排版的样式,这种方式对CSS+DIV技术有一定要求。
第二种方法是跟据传过来的参数,去加载母板页面,这种方法比较简单,但灵活方面一般,如果页面有JS在找控件ID的时候会比较麻烦,
还有就是楼上说的动态载入用户控件,以及WepPart貌似用的人并不多。
以上方法都能实现你的要求,只是方法不同,看自己实际的需求,也可以组合着来用。
我现在测试了一下include,但是这个性能不好啊。
我是这样写的:不同的专题做一个不同的静态模板,里面代码大概如下,我精简了无关的HTML代码,里面有C#代码:
<%@ Import Namespace="System.Collections.Generic" %>
<%@ Import Namespace="System.Text" %>
<%@ Import Namespace="Ws2008.MODEL" %>
<%@ Import Namespace="Ws2008.Common" %>
<%@ Import Namespace="Ws2008.BLL" %>
<ul class="down_list">
<% for (int i = 0; i < ShowSoft().Count; i++)
{%>
<li>
<a title="<%=ShowSoft()[i].Title %>" href="<%=GetRouteUrl("view",new{id=ShowSoft()[i].SoftID}) %>" class="pic">
<img width="140" height="98" src="/images/deep.jpg" alt="淘宝商城多格jQuery焦点图" /></a>
<h2><a href="<%=GetRouteUrl("view",new{id=ShowSoft()[i].SoftID}) %>" title="note"><%=ShowSoft()[i].Title %></a></h2>
<div class="info">
<span class="time"><%=ShowSoft()[i].AddDate %></span>
</div>
<div class="note"><%=ShowSoft()[i].Description %></div>
</li>
<%} %>
</ul>
然后我在special.aspx中判断当前专题,然后include相应的模板。代码:
<% if (specialenname == "xp"){ %>
<!--#include file="/template/special/xp.html" -->
<%} %>
<%else if (specialenname == "win7"){ %>
<!--#include file="/template/special/win7.html" -->
<%} %>
这样基本做到了不同专题不同模板的效果,但我发现,这样写,性能上面好像有大幅降低。
可以考虑根据ID的不同加载不同的用户控件(UserControl),通过调用Page.LoadControl方法,可以参考 http://msdn.microsoft.com/en-us/library/t9ecy7tf.aspx
这样不方便啊。程序员可以这样用,但是给用户用,这样不方便啊。况且,专题可能有很多。