Nop 源码分析 十三 插件

前面分析太细了。。回到WidgetController的WidgetsByZone方法,大体意思是:

获得并缓存名称为string widgetZoneList<RenderWidgetModel>()

其中RenderWidgetModel记录的路由信息通过插件的GetDisplayWidgetRoute方法获得  如下:

/// <summary>
        /// Gets a route for displaying widget
        /// </summary>
        /// <param name="widgetZone">Widget zone where it's displayed</param>
        /// <param name="actionName">Action name</param>
        /// <param name="controllerName">Controller name</param>
        /// <param name="routeValues">Route values</param>
        public void GetDisplayWidgetRoute(string widgetZone, out string actionName, out string controllerName, out RouteValueDictionary routeValues)
        {
            actionName = "PublicInfo";
            controllerName = "WidgetsNivoSlider";
            routeValues = new RouteValueDictionary
            {
                {"Namespaces", "Nop.Plugin.Widgets.NivoSlider.Controllers"},
                {"area", null},
                {"widgetZone", widgetZone}
            };
        }

最后返回的是一个部分视图  model是:

new List<RenderWidgetModel>();

查看部分视图:

@model List<RenderWidgetModel>
@using Nop.Web.Models.Cms;
@foreach (var widget in Model)
{
    @Html.Action(widget.ActionName, widget.ControllerName, widget.RouteValues)
}

其实就是调用所有的Action.


继续_Root.Head.cshtml。

生成样式表文件,JS文件,和LINK等

然后Action了几个部件:

@Html.Action("RssHeaderLink", "News")
    @Html.Action("RssHeaderLink", "Blog")
    @*Favicon - upload favicon.ico file to the root directory*@
    @Html.Action("Favicon", "Common")

猜你喜欢

转载自www.cnblogs.com/runit/p/4235486.html