From f474d8bc52f3f77f248c0782c2a8243d1805bef2 Mon Sep 17 00:00:00 2001 From: Pranav K Date: Tue, 7 Feb 2017 16:57:51 -0800 Subject: [PATCH] React to optional Razor directive token feature --- samples/MvcSandbox/Pages/Index.cshtml | 2 +- .../PageDirective.cs | 12 ++++++++---- .../MvcSandboxTest.cs | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/samples/MvcSandbox/Pages/Index.cshtml b/samples/MvcSandbox/Pages/Index.cshtml index 207eaa2591..bde7d9957d 100644 --- a/samples/MvcSandbox/Pages/Index.cshtml +++ b/samples/MvcSandbox/Pages/Index.cshtml @@ -1,4 +1,4 @@ -@page Test +@page @model TestModel @functions { diff --git a/src/Microsoft.AspNetCore.Mvc.Razor.Host/PageDirective.cs b/src/Microsoft.AspNetCore.Mvc.Razor.Host/PageDirective.cs index 341765715c..df10aaeb7e 100644 --- a/src/Microsoft.AspNetCore.Mvc.Razor.Host/PageDirective.cs +++ b/src/Microsoft.AspNetCore.Mvc.Razor.Host/PageDirective.cs @@ -9,7 +9,11 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Host { public static class PageDirective { - public static readonly DirectiveDescriptor DirectiveDescriptor = DirectiveDescriptorBuilder.Create("page").AddString().Build(); + public static readonly DirectiveDescriptor DirectiveDescriptor = DirectiveDescriptorBuilder + .Create("page") + .BeginOptionals() + .AddString() + .Build(); public static IRazorEngineBuilder Register(IRazorEngineBuilder builder) { @@ -26,12 +30,12 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Host } routeTemplate = visitor.RouteTemplate; - return routeTemplate != null; + return visitor.DirectiveNode != null; } private class Visitor : RazorIRNodeWalker { - public DirectiveIRNode DirectiveNode { get; private set; } + public DirectiveIRNode DirectiveNode { get; private set; } public string RouteTemplate { get; private set; } @@ -40,7 +44,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Host if (node.Descriptor == DirectiveDescriptor) { DirectiveNode = node; - RouteTemplate = node.Tokens.First().Content; + RouteTemplate = node.Tokens.FirstOrDefault()?.Content; } } } diff --git a/test/Microsoft.AspNetCore.Mvc.FunctionalTests/MvcSandboxTest.cs b/test/Microsoft.AspNetCore.Mvc.FunctionalTests/MvcSandboxTest.cs index f5caba2d6a..e775067153 100644 --- a/test/Microsoft.AspNetCore.Mvc.FunctionalTests/MvcSandboxTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.FunctionalTests/MvcSandboxTest.cs @@ -29,7 +29,7 @@ namespace Microsoft.AspNetCore.Mvc.FunctionalTests public async Task RazorPages_ReturnSuccess() { // Arrange & Act - var response = await Client.GetStringAsync("http://localhost/Pages/Test"); + var response = await Client.GetStringAsync("http://localhost/Pages/"); // Assert Assert.Contains("This file should give you a quick view of a Mvc Razor Page in action.", response);