diff --git a/src/Microsoft.AspNetCore.Mvc.TagHelpers/FormTagHelper.cs b/src/Microsoft.AspNetCore.Mvc.TagHelpers/FormTagHelper.cs index 33d398055b..ad10121751 100644 --- a/src/Microsoft.AspNetCore.Mvc.TagHelpers/FormTagHelper.cs +++ b/src/Microsoft.AspNetCore.Mvc.TagHelpers/FormTagHelper.cs @@ -159,18 +159,19 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers } var antiforgeryDefault = true; + var routeableParametersProvided = Action != null || + Controller != null || + Area != null || + Page != null || + PageHandler != null || + Fragment != null || + Route != null || + (_routeValues != null && _routeValues.Count > 0); // If "action" is already set, it means the user is attempting to use a normal
+ +"; + + // Act + var response = await Client.GetStringAsync("/TagHelper/PostWithHandler"); + + // Assert + var responseContent = response.Trim(); + var forgeryToken = AntiforgeryTestHelper.RetrieveAntiforgeryToken(responseContent, "/TagHelper/PostWithHandler"); + var expectedContent = string.Format(expected, forgeryToken); + + Assert.Equal(expectedContent, responseContent, ignoreLineEndingDifferences: true); + } + [Fact] public async Task FormTagHelper_WithPage_AllowsPostingToAnotherPage() { diff --git a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/FormTagHelperTest.cs b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/FormTagHelperTest.cs index 9970667ae4..88ca0ebc5a 100644 --- a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/FormTagHelperTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/FormTagHelperTest.cs @@ -25,6 +25,53 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers { public class FormTagHelperTest { + [Fact] + public async Task ProcessAsync_InvokesGeneratePageForm_WithOnlyPageHandler() + { + // Arrange + var viewContext = CreateViewContext(); + var context = new TagHelperContext( + tagName: "form", + allAttributes: new TagHelperAttributeList() + { + { "asp-handler", "page-handler" }, + { "method", "get" } + }, + items: new Dictionary