Skip to main content
 首页 » 编程设计

c#之Sitecore 8 MVC ajax调用路由寄存器

2024年04月17日35pengyingh

我遇到了一个由糟糕的 sitecore 文档和我的经验不足引起的问题。

案例: 我有一个不是由我建立的 sitecore 项目,但我必须对其进行开发。没什么复杂的,效果图很少——基本的东西

问题: 我必须添加 3 个自定义路由才能将它们用于一些 ajax 调用。我有 routeconfig.cs 文件并在此处添加了这些路由,但看起来这并没有执行,因为任何地方都没有全局类。

所以,因为我读到我应该使用这些管道,但我不完全理解如何使用在应用程序启动时只执行一次的管道

我有一个由处理 404 的其他人开发的,但是这个是在每个请求上执行的。我不想检查路由是否存在并在此过程中注册

还有其他办法吗?

现在是这样工作的:

namespace SS.Configuration.Pipelines 
{ 
    public class Custom404ResolverPipeline : HttpRequestProcessor 
    { 
        public override void Process(HttpRequestArgs args) 
        { 
            Assert.ArgumentNotNull(args, "args"); 
 
            if (RouteTable.Routes["AjaxCall"] == null) RouteConfig.RegisterRoutes(RouteTable.Routes); 
 
            //do some other stuff 

请您参考如下方法:

您应该在initialize 管道中注册您的路由,以便它们仅在应用程序启动时注册一次:How to register custom ASP.NET MVC routes in Sitecore

链接文章中的示例:

为初始化管道创建自定义处理器并在 Process 方法中定义自定义路由,类似于以下内容:

public class RegisterCustomRoute 
{ 
  public virtual void Process(PipelineArgs args) 
  { 
    RouteTable.Routes.MapRoute("CustomRoute", "some/route/{controller}/{action}/{id}"); 
  } 
} 

将此处理器添加到 Sitecore InitializeRoutes 处理器之前的初始化管道中。您可以通过以下方式在配置补丁文件的帮助下执行此操作:

<?xml version="1.0" encoding="utf-8"?> 
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/"> 
  <sitecore> 
    <pipelines> 
      <initialize> 
        <processor type="MyNamespace.RegisterCustomRoute, MyAssembly"  patch:before="processor[@type='Sitecore.Mvc.Pipelines.Loader.InitializeRoutes, Sitecore.Mvc']" /> 
      </initialize>‌ 
    </pipelines> 
  </sitecore> 
</configuration>