React to optional Razor directive token feature

This commit is contained in:
Pranav K 2017-02-07 16:57:51 -08:00
parent 9264f3aa2d
commit f474d8bc52
3 changed files with 10 additions and 6 deletions

View File

@ -1,4 +1,4 @@
@page Test @page
@model TestModel @model TestModel
@functions { @functions {

View File

@ -9,7 +9,11 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Host
{ {
public static class PageDirective 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) public static IRazorEngineBuilder Register(IRazorEngineBuilder builder)
{ {
@ -26,12 +30,12 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Host
} }
routeTemplate = visitor.RouteTemplate; routeTemplate = visitor.RouteTemplate;
return routeTemplate != null; return visitor.DirectiveNode != null;
} }
private class Visitor : RazorIRNodeWalker private class Visitor : RazorIRNodeWalker
{ {
public DirectiveIRNode DirectiveNode { get; private set; } public DirectiveIRNode DirectiveNode { get; private set; }
public string RouteTemplate { get; private set; } public string RouteTemplate { get; private set; }
@ -40,7 +44,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Host
if (node.Descriptor == DirectiveDescriptor) if (node.Descriptor == DirectiveDescriptor)
{ {
DirectiveNode = node; DirectiveNode = node;
RouteTemplate = node.Tokens.First().Content; RouteTemplate = node.Tokens.FirstOrDefault()?.Content;
} }
} }
} }

View File

@ -29,7 +29,7 @@ namespace Microsoft.AspNetCore.Mvc.FunctionalTests
public async Task RazorPages_ReturnSuccess() public async Task RazorPages_ReturnSuccess()
{ {
// Arrange & Act // Arrange & Act
var response = await Client.GetStringAsync("http://localhost/Pages/Test"); var response = await Client.GetStringAsync("http://localhost/Pages/");
// Assert // Assert
Assert.Contains("This file should give you a quick view of a Mvc Razor Page in action.", response); Assert.Contains("This file should give you a quick view of a Mvc Razor Page in action.", response);