用纸壳CMS做二次开发的时候,经常会使用到异步请求。纸壳CMS里面实现异步请求非常简单,只需要创建好对应的controller
,action
和路由就可以了。
例如我们创建了一个ArticleInfoController
,GetArticles
用于返回所有文章信息:
namespace ZKEACMS.Article.Controllers
{
public class ArticleInfoController : Controller
{
private readonly IArticleService _articleService;
public ArticleInfoController(IArticleService articleService)
{
_articleService = articleService;
}
public IActionResult GetArticles()
{
return Json(_articleService.Get());
}
}
}
接下来我们需要创建一个路由,如果不创建路由,将会使用后端路由(admin/{controller}/{action}/{id?}
)来处理请求,这显然不是我们所期望的。
我们打开插件类,例如ArticlePlug.cs
,并在RegistRoute()
方法注册我们的路由:
public override IEnumerable<RouteDescriptor> RegistRoute()
{
yield return new LocalizeRouteDescriptor
{
RouteName = "article-info",
Template = "article/info/getarticles",
Defaults = new { controller = "ArticleInfo", action = "GetArticles" },
Priority = 12
};
}
注意:定义路由时,注意将优先级设置到10以上(>10)。LocalizeRouteDescriptor
表示该路由支持多语言,如不需要支持多语言,可直接使用RouteDescriptor
接下来就可以在模板里面使用了,Razor:
@using (Script.AtFoot())
{
<script type="text/javascript">
$.get("@Url.Action("GetArticles","ArticleInfo")", function (data) {
});
</script>
}
前端模板:
<script type="text/javascript">
$.get("{% url '~/article/info/getarticles' %}", function (data) {
});
</script>