纸壳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是应用程序上下文,每个请求一个实例,可以在这上面获取一些用户相关的信息。

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("页面")