理论上网站上的所有页面都可以通过栏目管理来添加,那自定义页面的意义是什么呢?
网站的需求是很多样化的,比如需要制作一个对外提供数据的api,甚至制作一个搜索页面,或者制作一些数据和栏目没有对应关系的页面,这些页面独立于网站栏目,如果用栏目页来制作,会导致栏目结构混乱和不好维护,这时候自定义页面就可以很好解决这种问题,下面我们演示如何制作一个自定义的搜索页面。
1、打开网站模板文件目录,新建一个MyRoute.config文件(保存为utf8格式),文件名称规则为: *Route.config,如下图:
2、打开这个文件,输入下面的xml内容,并保存。
<?xml version="1.0" encoding="utf-8"?> <configuration> <route urlConstraint="^/news/search/([1-9]\d{0,8}/)?$" viewPath="帮助中心/search.cshtml" httpcacheSolutionId="0" columnId="0" title="帮助搜索"></route> </configuration>
其中route节点为自定义页面的路由参数,多个自定义页面可以新建多个route节点。
urlConstraint:表示url的正则匹配规则,匹配的话就可以请求viewPath指定的模板文件。
viewPath:模板文件对应的相对路径,这里只填写相对路径,模板必须放在views目录下。
httpcacheSolutionId:自定义使用的缓存方案Id,如果不使用缓存,设置为0。
columnId:自定义页面对应的栏目id,如果不需要对应,设置为0。
title:自定义页面的浏览器中显示的标题。
3、点击views。
4、创建一个帮助中心文件夹,如下图:
5、点击打开帮助中心,创建一个search.cshtml文件(保存为utf8格式),如下图:
6、打开搜索页面,输入下面内容:
@{
var keyword = Request.QueryString["key"];//获取搜索关键词
var i=0;
}
<div>
<div class="container">
<ul class="breadcrumb">
<li><a href="/"><span class="fa fa-home"> 首页</span></a></li>
<li><a href="">在线搜索</a></li>
</ul>
<div class="news-list">
@if (!string.IsNullOrEmpty(keyword))
{
foreach (var item in Html.InfoDataList(new { Table = "news" }, "[title] like @title", new { title = "%" + keyword + "%" }))
{
string url = Html.InfoDataUrl((int)item.ColumnId, (int)item.Id);
<div class="item clearfix">
<div class="title"><a href="@url" target="_blank"><i class="fa fa-angle-right"></i>@item.Title</a></div>
</div>
i++;
}
}
@if(i==0)
{
<div>暂时没有找到匹配的记录,请更换一个关键词重新搜索!</div>
}
</div>
</div>
这样一个简单的搜索页面(搜索news表,注意需要有news信息表,否则会报错)就制作完成了。
7、点击左上角的重启图标,重启进程后后自定义页面路由生效
8、在浏览器输入:http://你的域名/news/search/就可以打开搜索页面。