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
@functions {

View File

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

View File

@ -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);