asp.net-mvc - MarkAsNewProduct 过滤器在 nopcommerce 4.2 中不起作用
问题描述
我在nopcommerce4.2的产品类别页面中添加了用于过滤“MarkAsNewProduct”的复选框。
先看图,
在这张图片中,我在上面过滤了三件事。即过滤供应商=>类别=> markasnewproduct
现在,当我选中markasnewproduct过滤器的复选框时,供应商和类别过滤器正在完美地发生,当时过滤器无法按照新产品工作。
这是我的控制器代码,
[HttpsRequirement(SslRequirement.No)]
public virtual IActionResult Vendor(int vendorId, CatalogPagingFilteringModel command, int categoryId, bool markAsNewProduct)
{
//int abc = Convert.ToInt32(ViewBag.CategoryId);
var vendor = _vendorService.GetVendorById(vendorId);
if (vendor == null || vendor.Deleted || !vendor.Active)
return InvokeHttp404();
//'Continue shopping' URL
_genericAttributeService.SaveAttribute(_workContext.CurrentCustomer,
NopCustomerDefaults.LastContinueShoppingPageAttribute,
_webHelper.GetThisPageUrl(false),
_storeContext.CurrentStore.Id);
//display "edit" (manage) link
if (_permissionService.Authorize(StandardPermissionProvider.AccessAdminPanel) && _permissionService.Authorize(StandardPermissionProvider.ManageVendors))
DisplayEditLink(Url.Action("Edit", "Vendor", new { id = vendor.Id, area = AreaNames.Admin }));
//model
var model = _catalogModelFactory.PrepareVendorModel(vendor, command, categoryId, markAsNewProduct);
return View(model);
}
这里的景色,
@model VendorModel
@using Nop.Core.Domain.Seo
@inject Nop.Core.IWebHelper webHelper
@inject SeoSettings seoSettings
@{
Layout = "_ColumnsTwo";
//title
Html.AddTitleParts(!string.IsNullOrEmpty(Model.MetaTitle) ? Model.MetaTitle : Model.Name);
//meta
Html.AddMetaDescriptionParts(Model.MetaDescription);
Html.AddMetaKeywordParts(Model.MetaKeywords);
//page class
Html.AppendPageCssClassParts("html-vendor-page");
if (seoSettings.CanonicalUrlsEnabled)
{
var vendorUrl = Url.RouteUrl("Vendor", new { SeName = Model.SeName }, webHelper.CurrentRequestProtocol).ToLowerInvariant();
Html.AddCanonicalUrlParts(vendorUrl, seoSettings.QueryStringInCanonicalUrlsEnabled);
}
}
<form asp-route="Vendor" method="post">
<input type="hidden" value="@Model.CategoryId" id="CategoryId" name="categoryId" />
<input type="submit" value="SUBMIT" id="submit" style="display: none;" />
<div class="page vendor-page">
<div class="page-title">
<h1>@Model.Name</h1>
</div>
<div class="page-body">
@await Component.InvokeAsync("Widget", new { widgetZone = PublicWidgetZones.VendorDetailsTop, additionalData = Model })
<div class="contact-vendor">
<input type="button" value="@T("ContactVendor")" class="button-2 contact-vendor-button"
onclick="setLocation('@Url.RouteUrl("Vendordetail", new { vendorId = Model.Id })')" />
<input asp-for="markAsNewProduct" onclick="MarkAsNewProductCheck()" /> MarkAsNewProduct
</div>
@if (Model.Products.Count > 0)
{
@await Html.PartialAsync("_CatalogSelectors", Model.PagingFilteringContext)
}
@*product list*@
@if (Model.Products.Count > 0)
{
<div class="@(Model.PagingFilteringContext.ViewMode == "list" ? "product-list" : "product-grid")">
<div class="item-grid">
@foreach (var product in Model.Products)
{
<div class="item-box">
@await Html.PartialAsync("_ProductBox", product)
</div>
}
</div>
</div>
}
@{
var pager = Html.Pager(Model.PagingFilteringContext).QueryParam("pagenumber");
}
@if (!pager.IsEmpty())
{
<div class="pager">
@pager
</div>
}
@await Component.InvokeAsync("Widget", new { widgetZone = PublicWidgetZones.VendorDetailsBottom, additionalData = Model })
</div>
</div>
</form>
<script asp-location="Footer">
function MarkAsNewProductCheck() {
$('#submit').trigger('click');
}
</script>
现在,在这个代码控制器代码中,即
public virtual IActionResult Vendor(int vendorId, CatalogPagingFilteringModel command, int categoryId, bool markAsNewProduct)
参数中markasnewproduct的值就来了。例如:如果我取消选中复选框,那么它会显示错误值,而当我选中复选框时,它会显示真实值。
解决方案
推荐阅读
- jquery - jQuery val() 无法从输入中获取值
- javascript - 当您将 JavaScript (jQuery) 链接为单独的文件时,它有时不起作用
- vue.js - 如何使用 vue.js 和 element-ui 的文件上传组件在上传到服务器之前预览文件?
- c# - 在 C# 中根据样式获取 HTML 元素
- node.js - 使用超测试将查询字符串传递给 api 抛出错误:ECONNREFUSED:连接被拒绝
- oracle - 在执行查询之前验证结果
- .htaccess - 将 url 重写到另一个域,同时保留 url 的最后一部分
- java - InetAddress.getAllByName() 被阻塞
- reactjs - Firestore onSnapshot 更新并将数组添加到 DOM 而不是仅更新
- laravel - 如何在 Laravel 上更改集合结果中的字段名称