纸壳CMS没有使用ASP.NET Core默认的RazorPage<TModel>
,而是重写了一个EasyRazorPage<TModel>
namespace Easy.Mvc.RazorPages
{
public abstract class EasyRazorPage<TModel> : RazorPage<TModel>
{
...
}
}
并在_ViewImports.cshtml
指定使用EasyRazorPage<TModel>
这很重要。
@inherits Easy.Mvc.RazorPages.EasyRazorPage<TModel>
ApplicationContext是应用程序上下文,每个请求一个实例,可以在这上面获取一些用户相关的信息。
ApplicationContext.CurrentUser //当前后端登录用户
ApplicationContext.CurrentCustomer //前端用户
可以这样获取CMSApplicationContext
ApplicationContext.As<CMSApplicationContext>()
在视图页面里面,可以很容易的引入样式或者脚本,并可以设置放在页面的顶部或者底部:
@{
Style.Reqiured("dataTable").AtHead();
Script.Reqiured("dataTable").AtFoot();
Script.Reqiured("datepicker").AtFoot();
Style.Reqiured("datepicker").AtHead();
}
或者也可以这样定义脚本块:
@using (Script.AtFoot())
{
<script type="text/javascript">
</script>
}
定义样式:
@using (Style.AtHead())
{
<style>
</style>
}
使用Authorizer
来判断权限:
@if (Authorizer.Authorize(PermissionKeys.ManagePage))
{
<div class="panel-footer">
<a href="@Url.Action("Create", new {ParentID = "#"})" class="btn btn-link btn-xs">
<i class="glyphicon glyphicon-plus"></i>
@L("添加页面")
</a>
<i class="glyphicon glyphicon-question-sign" style="cursor:help" data-toggle="modal" data-target="#help"></i>
</div>
}
使用@L("")来使用翻译功能
@L("页面")