diff --git a/source/Handlebars.Test/IssueTests.cs b/source/Handlebars.Test/IssueTests.cs index 985ee853..d6d5ab0a 100644 --- a/source/Handlebars.Test/IssueTests.cs +++ b/source/Handlebars.Test/IssueTests.cs @@ -105,5 +105,48 @@ public void BlockHelperWithInversion() Assert.Equal("empty", template(new { otherInput = 1 })); Assert.Equal("not empty", template(new { input = 1 })); } + + // Issue: https://github.com/Handlebars-Net/Handlebars.Net/issues/383 + [Fact] + public void TestNestedPartials() + { + var innerPartial = @"{{#>outer-partial}}
+ Begin inner partial
+ Begin inner partial block
+ {{>@partial-block}} + End inner partial block
+ End inner partial
+ {{/outer-partial}}"; + + var outerPartial = @"Begin outer partial
+ Begin outer partial block + {{>@partial-block}} + End outer partial block
+ End outer partial"; + + var view = @"{{#>inner-partial}} + View
+ {{/inner-partial}}"; + + var handlebars = Handlebars.Create(); + handlebars.RegisterTemplate("outer-partial", outerPartial); + handlebars.RegisterTemplate("inner-partial", innerPartial); + + var callback = handlebars.Compile(view); + string result = callback(new object()); + + const string expected = @"Begin outer partial
+ Begin outer partial block +
+ Begin inner partial
+ Begin inner partial block
+ View
+ End inner partial block
+ End inner partial
+ End outer partial block
+ End outer partial"; + + Assert.Equal(expected, result); + } } } \ No newline at end of file diff --git a/source/Handlebars/Compiler/Translation/Expression/PartialBinder.cs b/source/Handlebars/Compiler/Translation/Expression/PartialBinder.cs index aac54f66..4eaeec96 100644 --- a/source/Handlebars/Compiler/Translation/Expression/PartialBinder.cs +++ b/source/Handlebars/Compiler/Translation/Expression/PartialBinder.cs @@ -75,7 +75,7 @@ private static bool InvokePartial( return false; } - context.PartialBlockTemplate(writer, context); + context.PartialBlockTemplate(writer, context.ParentContext); return true; }