C# 如何更新EngineContext.Current.Resolve<;StoreInformationSettings>;()升级到nopcommerce 3.9后支持响应设计
我们尝试将现有的nopcommerce应用程序从3.40升级到3.90 遵循中的所有步骤 在自定义主题和自定义插件的所有web.config文件中,MVC版本从C# 如何更新EngineContext.Current.Resolve<;StoreInformationSettings>;()升级到nopcommerce 3.9后支持响应设计,c#,nopcommerce,nopcommerce-3.90,C#,Nopcommerce,Nopcommerce 3.90,我们尝试将现有的nopcommerce应用程序从3.40升级到3.90 遵循中的所有步骤 在自定义主题和自定义插件的所有web.config文件中,MVC版本从System.web.MVC,version=5.0.0.0,更新为System.web.MVC,version=5.2.3.0 现在我们在自定义主题中出现以下错误 编译器错误消息:CS1061:“Nop.Core.Domain.StoreInformationSettings”不包含“ResponsiveDesignSupported”
System.web.MVC,version=5.0.0.0,
更新为System.web.MVC,version=5.2.3.0
现在我们在自定义主题中出现以下错误
编译器错误消息:CS1061:“Nop.Core.Domain.StoreInformationSettings”不包含“ResponsiveDesignSupported”的定义,并且找不到接受“Nop.Core.Domain.StoreInformationSettings”类型的第一个参数的扩展方法“ResponsiveDesignSupported”(是否缺少using指令或程序集引用?)
StoreInformationSettings中似乎没有ResponsiveDesignSupported属性
nopcommerce 3.90中是否有方法获得ResponsiveDesignSupported
设置
下面是一些代码
@model TopMenuModel
@using Nop.Core.Domain
@using Nop.Core.Infrastructure
@using Nop.Web.Models.Catalog;
@{
var isRtl = this.ShouldUseRtlTheme();
var supportResponsive = EngineContext.Current.Resolve<StoreInformationSettings>().ResponsiveDesignSupported;
}
@helper RenderCategoryLine(CategorySimpleModel category, int level, bool responsiveMobileMenu)
{
<li>
<a href="@Url.RouteUrl("Category", new { SeName = category.SeName })">@category.Name
@if (category.NumberOfProducts.HasValue)
{
<text> </text>@T("Categories.TotalProducts", category.NumberOfProducts.Value)
}
</a>
@{
var levelClass = "";
if (level == 0)
{
levelClass = "firstLevel";
<div class="top-menu-triangle"></div>
}
if (category.SubCategories.Count > 0)
{
if (responsiveMobileMenu)
{
<span class="expand"> </span>
}
<div class="sublist @levelClass">
<ul>
@foreach (var subCategory in category.SubCategories)
{
@RenderCategoryLine(subCategory, level + 1, responsiveMobileMenu)
}
</ul>
</div>
}
}
</li>
}
<ul class="top-menu">
@Html.Widget("header_menu_before")
@if (Model.Categories.Count > 0)
{
<li><a href="@Url.RouteUrl("HomePage")"><i class="fa fa-home fa-lg"> </i></a></li>
foreach (var category in Model.Categories)
{
@RenderCategoryLine(category, 0, false)
}
}
else
{
//no categories to display? in this case let's diplay some default menu items (should we?)
<li><a href="@Url.RouteUrl("HomePage")">@T("HomePage")</a></li>
if (Model.RecentlyAddedProductsEnabled)
{
<li><a href="@Url.RouteUrl("RecentlyAddedProducts")">@T("Products.NewProducts")</a>
</li>
}
<li><a href="@Url.RouteUrl("ProductSearch")">@T("Search")</a> </li>
<li><a href="@Url.RouteUrl("CustomerInfo")">@T("Account.MyAccount")</a></li>
if (Model.BlogEnabled)
{
<li><a href="@Url.RouteUrl("Blog")">@T("Blog")</a></li>
}
if (Model.ForumEnabled)
{
<li><a href="@Url.RouteUrl("Boards")">@T("Forum.Forums") </a></li>
}
<li><a href="@Url.RouteUrl("ContactUs")">@T("ContactUs")</a></li>
}
@Html.Widget("header_menu_after")
</ul>
<script type="text/javascript">
$('li', '.top-menu').on('mouseenter', function () {
$('a', $(this)).first().addClass('hover');
if (!$(this).parent().hasClass('top-menu')) {
var width = $(this).innerWidth();
$('.sublist', $(this)).first().css('@(isRtl ? "right" : "left")', width + 15);
}
$('.sublist', $(this)).first().addClass('active');
$('.top-menu-triangle', $(this)).addClass('active');
});
$('li', '.top-menu').on('mouseleave', function () {
$('a', $(this)).first().removeClass('hover');
$('.sublist', $(this)).first().removeClass('active');
$('.top-menu-triangle', $(this)).removeClass('active');
});
</script>
@if (supportResponsive)
{
<div id="mob-menu-button">
<a href="">
<span class="icon"><span class="line"></span><span class="line"></span><span class="line"></span></span>
@{
var responsiveMenuTitle = Model.Categories.Count > 0 ? T("Categories") : T("Menu");
}
<span>@responsiveMenuTitle</span>
</a>
</div>
<ul class="mob-top-menu">
@Html.Widget("mob_header_menu_before")
@if (Model.Categories.Count > 0)
{
foreach (var category in Model.Categories)
{
@RenderCategoryLine(category, 0, true)
}
}
else
{
//no categories to display? in this case let's diplay some default menu items (should we?)
<li><a href="@Url.RouteUrl("HomePage")">@T("HomePage")</a></li>
if (Model.RecentlyAddedProductsEnabled)
{
<li>
<a href="@Url.RouteUrl("RecentlyAddedProducts")">@T("Products.NewProducts")</a>
</li>
}
<li><a href="@Url.RouteUrl("ProductSearch")">@T("Search")</a> </li>
<li><a href="@Url.RouteUrl("CustomerInfo")">@T("Account.MyAccount")</a></li>
if (Model.BlogEnabled)
{
<li><a href="@Url.RouteUrl("Blog")">@T("Blog")</a></li>
}
if (Model.ForumEnabled)
{
<li><a href="@Url.RouteUrl("Boards")">@T("Forum.Forums") </a></li>
}
<li><a href="@Url.RouteUrl("ContactUs")">@T("ContactUs")</a></li>
}
@Html.Widget("mob_header_menu_after")
</ul>
<script type="text/javascript">
$('a', $('#mob-menu-button')).toggle(function() {
$('.mob-top-menu').addClass('show');
},
function() {
$('.mob-top-menu').removeClass('show');
}
);
$(function($) {
$('.mob-top-menu .expand').click(function() {
var parent = $(this).parent();
if (parent.hasClass('active')) {
$(".sublist:first", parent).hide(300);
parent.removeClass('active');
} else {
$(".sublist:first", parent).show(300);
parent.addClass('active');
}
});
});
</script>
}
@model TopMenuModel
@使用Nop.Core.Domain
@使用Nop.Core.Infrastructure
@使用Nop.Web.Models.Catalog;
@{
var isRtl=this.ShouldUseRtlTheme();
var supportResponsive=EngineContext.Current.Resolve().ResponsiveDesignSupported;
}
@helper RenderCategoryLine(类别SimpleModel类别、int级别、bool响应MobileMou)
{
@{
var levelClass=“”;
如果(级别==0)
{
levelClass=“firstLevel”;
}
如果(category.SubCategories.Count>0)
{
if(响应移动单元)
{
}
@foreach(类别中的var子类别。子类别)
{
@RenderCategoryLine(子类别,级别+1,响应移动单元)
}
}
}
}
@小部件(“标题菜单之前”)
@如果(Model.Categories.Count>0)
{
foreach(Model.Categories中的var类别)
{
@RenderCategoryLine(类别,0,false)
}
}
其他的
{
//没有要显示的类别?在这种情况下,让我们显示一些默认菜单项(我们应该吗?)
if(最近添加的产品型号)
{
-
}
if(Model.blogdenabled)
{
}
if(型号ForumEnabled)
{
}
}
@小部件(“标题菜单后”)
$('li','.top menu')。在('mouseenter',函数(){
$('a',$(this)).first().addClass('hover');
if(!$(this.parent().hasClass('top-menu')){
var width=$(this.innerWidth();
$('.sublist',$(this)).first().css('@(isRtl?“right”:“left”)',宽度+15);
}
$('.sublist',$(this)).first().addClass('active');
$('.top menu triangle',$(this)).addClass('active');
});
$('li','.top menu')。在('mouseleave',函数(){
$('a',$(this)).first().removeClass('hover');
$('.sublist',$(this)).first().removeClass('active');
$('.top menu triangle',$(this)).removeClass('active');
});
@如果(支持响应)
{
@小部件(“移动标题菜单之前”)
@如果(Model.Categories.Count>0)
{
foreach(Model.Categories中的var类别)
{
@RenderCategoryLine(类别,0,真)
}
}
其他的
{
//没有要显示的类别?在这种情况下,让我们显示一些默认菜单项(我们应该吗?)
if(最近添加的产品型号)
{
-
}
if(Model.blogdenabled)
{
}
if(型号ForumEnabled)
{
}
}
@小部件(“移动标题菜单后”)
$('a',$('mob menu button'))。切换(函数(){
$('.mob顶部菜单').addClass('show');
},
函数(){
$('.mob顶部菜单').removeClass('show');
}
);
$(函数($){
$('.mob顶部菜单.expand')。单击(函数(){
var parent=$(this.parent();
if(parent.hasClass('active')){
$(“.sublist:first”,parent).hide(300);
parent.removeClass('active');
}否则{
$(“.sublist:first”,parent).show(300);
parent.addClass('active');
}
});
});
}
响应式设计支持选项已从nopCommerce 3.6版起删除
如果您从任何供应商处购买了自定义主题,请获取您的nopCommerce 3.9版本的主题。由于版本3.70,ResponsiveDesignSupported设置不再可用,并且nop支持即时响应主题,如果您想在主题中关闭或打开响应设计,它应该在主题本身内通过jquery、css完成。您可以访问哪些其他属性?你能展示一些代码吗?@DavidG我已经添加了codehm我想这个选项已经被删除了,因为现在没有办法禁用响应。这很有道理,因为一切都应该是有反应的。@DavidG谢谢你的帮助。我将删除自定义主题中所有responsiveSupported检查。