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;
}