nopcommerce里面的@Html.Widget("home_page_top") 是什么?
2014-06-08 21:29
507 查看
很多朋友在修改模板的时候看到很多类似@Html.Widget("xxx")的东西,这里简单介绍一下流程:
比如@Html.Widget("home_page_top"),首先要知道Html.Widget是什么,这是Html的一个扩展方法,位于Nop.Web.Framework\HtmlExtensions.cs
可以看到这里面调用的是action,找到WidgetController下面的WidgetsByZone,这是一个child action(不懂的百度一下),读一下代码,就能了解这个方法就是通过反射获取到实现接口IWidgetPlugin并且GetWidgetZones()包含home_page_top的插件的列表,然后创建一个model传递给试图:
打开试图Widget\WidgetsByZone.cshtml:
这个试图的目的就是循环输出html,具体输出的内容在插件里面实现的,比如插件Nop.Plugin.Widgets.NivoSlider里面有个NivoSliderPlugin,这类插件必须继承自BasePlugin,和IWidgetPlugin,里面的方法GetDisplayWidgetRoute就是用于返回显示这个插件内容的action的信息,WidgetsNivoSliderController.cs里面的public ActionResult PublicInfo(string widgetZone)就是这个插件具体输出的内容,大体流程就是这样了。
分享是一种美。版权所有,转载请注明出处 http://www.nopchina.net/
比如@Html.Widget("home_page_top"),首先要知道Html.Widget是什么,这是Html的一个扩展方法,位于Nop.Web.Framework\HtmlExtensions.cs
public static MvcHtmlString Widget(this HtmlHelper helper, string widgetZone) { return helper.Action("WidgetsByZone", "Widget", new { widgetZone = widgetZone }); }
可以看到这里面调用的是action,找到WidgetController下面的WidgetsByZone,这是一个child action(不懂的百度一下),读一下代码,就能了解这个方法就是通过反射获取到实现接口IWidgetPlugin并且GetWidgetZones()包含home_page_top的插件的列表,然后创建一个model传递给试图:
[ChildActionOnly] public ActionResult WidgetsByZone(string widgetZone) { //model var model = new List<RenderWidgetModel>(); var widgets = _widgetService.LoadActiveWidgetsByWidgetZone(widgetZone, _storeContext.CurrentStore.Id); foreach (var widget in widgets) { var widgetModel = new RenderWidgetModel(); string actionName; string controllerName; RouteValueDictionary routeValues; widget.GetDisplayWidgetRoute(widgetZone, out actionName, out controllerName, out routeValues); widgetModel.ActionName = actionName; widgetModel.ControllerName = controllerName; widgetModel.RouteValues = routeValues; model.Add(widgetModel); } return PartialView(model); }
打开试图Widget\WidgetsByZone.cshtml:
@model List<RenderWidgetModel> @using Nop.Web.Models.Cms; @foreach (var widget in Model) { @Html.Action(widget.ActionName, widget.ControllerName, widget.RouteValues) }
这个试图的目的就是循环输出html,具体输出的内容在插件里面实现的,比如插件Nop.Plugin.Widgets.NivoSlider里面有个NivoSliderPlugin,这类插件必须继承自BasePlugin,和IWidgetPlugin,里面的方法GetDisplayWidgetRoute就是用于返回显示这个插件内容的action的信息,WidgetsNivoSliderController.cs里面的public ActionResult PublicInfo(string widgetZone)就是这个插件具体输出的内容,大体流程就是这样了。
分享是一种美。版权所有,转载请注明出处 http://www.nopchina.net/
相关文章推荐
- nopcommerce里面的@Html.Widget("home_page_top") 是什么?
- 关于NopCommerce3.6版的@Html.Widget(“home_page_top”)的说明
- Page.ClientScript.RegisterStartupScript(this.GetType(), "","")引号里面具体代表什么?
- <%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%>这几个编码分别代表什么意思?
- 求助:page contentType="text/html;charset=gb2312"等价于什么?
- double screenWidth = (double)HtmlPage.Window.Eval("screen.Width");
- vPro里面的"v"代表什么意思?
- [html] open the link in a new page without target="_blank" (Required by w3c strict)
- <META http-equiv=Content-Type content="text/html; charset=gb2312">这句话什么意思?
- HTML页面中rows="119,*,99"表示什么意思?
- HTML页面style中里面!-- --的作用是什么
- pageEncoding和charset 编码 以及<%@ page contentType="text/html; charset=utf-8"....>作用
- <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>意义
- find ~/ -name "*.aic" -exec rm -rf {} \;请问里面的各项是什么意思--?
- 目标一:"这是什么地方"---Home Page Goal
- C语言里面的"\r"与"\n"有什么区别?
- SAP alv(lvc)的抬头标题设定(html_top_of_page)
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />是什么
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtm 是什么意思
- split("\\s"{1,})里面的正则表示什么意思