【问题标题】:Render view from nancy bootstrapper?从 nancy bootstrapper 渲染视图?
【发布时间】:2017-01-19 16:56:58
【问题描述】:

是否可以在 NancyModule 之外渲染视图?例如,我希望能够像这样在错误管道中呈现视图:

public class MyBootstrapper: DefaultNancyBootstrapper
{

    protected override void RequestStartup(TinyIoCContainer container, IPipelines pipelines, NancyContext context)
    {
        pipelines.OnError += ((ctx, e) =>
        {

            if (context.Request.Headers.Accept.Any(c => c.Item1.Equals("text/html")))
            {
                // Render view using e here
            }

        });
    }
}

【问题讨论】:

    标签: c# nancy


    【解决方案1】:

    通过从容器中提取 ViewFactory 来解决它:

    public class MyBootstrapper: DefaultNancyBootstrapper
    {
    
        protected override void RequestStartup(TinyIoCContainer container, IPipelines pipelines, NancyContext context)
        {
            pipelines.OnError += ((ctx, e) =>
            {
    
                if (context.Request.Headers.Accept.Any(c => c.Item1.Equals("text/html")))
                {
                     IViewFactory viewFactory = container.Resolve<IViewFactory>();
                     return viewFactory.RenderView("Error", new {Message = ex.Message}, new ViewLocationContext() { Context = context, ModuleName = "", ModulePath = "" });
                }
    
            });
        }
    }
    

    不知道空白的 ModuleName 和 ModulePath 是否会破坏任何东西,但它似乎有效。

    【讨论】:

      猜你喜欢
      • 2017-11-10
      • 2013-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-08
      相关资源
      最近更新 更多