簡體   English   中英

從插件 NopCommerce 4.3 覆蓋視圖

[英]override view from plugin NopCommerce 4.3

我想覆蓋運輸方式頁面的視圖。 我嘗試了所有變體,但沒有任何效果。 請幫幫我。 預先感謝

要覆蓋 NopCommerce 中的視圖,您首先需要將要更改的.cshtml文件復制到插件中並進行修改。 不要忘記將此文件設置為 Content 並將Copy to Output Directory屬性設置為 Copy if Newer 或 Copy Always。

之后,您還必須在插件中實現IViewLocationExpander接口。 它應該看起來像這樣。

public class MyViewLocationExpander : IViewLocationExpander
{
   public IEnumerable<string> ExpandViewLocations(ViewLocationExpanderContext context, IEnumerable<string> viewLocations)
   {
      if(context.ViewName == "ViewToOverwrite")
      {
         viewLocations = new[] { "PathToMyCustomView" }.Concat(viewLocations);
      }

      return viewLocations;
    }

    public void PopulateValues(ViewLocationExpanderContext context)
    {
       return;
    }
}

最后一步是為插件注冊您的自定義視圖擴展器。 您可以通過在插件中實現INopStartup接口來做到這一點。 它應該看起來像這樣。

public class MyStartup : INopStartup
{
   public int Order => int.MaxValue;

   public void Configure(IApplicationBuilder application)
   {
   }

   public void ConfigureServices(IServiceCollection services, IConfiguration configuration)
   {
      services.Configure<RazorViewEngineOptions>(options =>
      {
         options.ViewLocationExpanders.Add(new MyViewLocationExpander());
      });
   }
}

很簡單,在你的插件中實現 ViewLocaionExpander。 這將覆蓋您的視圖,它將從插件的視圖中呈現

嗨,我使用類似的解決方案來解決這個問題。 在您的 RouteProvider.cs

public partial class RouteProvider : IRouteProvider
   {
    public void RegisterRoutes(IEndpointRouteBuilder endpointRouteBuilder)
        {
               endpointRouteBuilder.MapControllerRoute("RedirectPdfPackagingSlip",
                    "Admin/yourController/yourAction",
                    new { controller = "Order", action = "PdfPackagingSlip" });
        }
    }

並將 go 恢復為可以在 controller 中使用的原始方法

  if (order.ShippingRateComputationMethodSystemName != "your shipping method SystemName")
            return Redirect("~/Admin/Order/PdfPackagingSlip?shipmentId=" + ShipmentId);

我希望這有幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM