59 lines
2.2 KiB
C#
59 lines
2.2 KiB
C#
// Copyright (c) .NET Foundation. All rights reserved.
|
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
|
|
using System;
|
|
using System.Linq;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.AspNetCore.Mvc.ApplicationModels;
|
|
|
|
namespace ApplicationModelWebSite
|
|
{
|
|
public class HomeController : Controller
|
|
{
|
|
public string GetCommonDescription()
|
|
{
|
|
return ControllerContext.ActionDescriptor.Properties["description"].ToString();
|
|
}
|
|
|
|
[HttpGet("Home/GetHelloWorld")]
|
|
public object GetHelloWorld([FromHeader] string helloWorld)
|
|
{
|
|
return ControllerContext.ActionDescriptor.Properties["source"].ToString() + " - " + helloWorld;
|
|
}
|
|
|
|
[HttpGet("Home/CannotBeRouted", Name = nameof(SuppressPathMatching))]
|
|
[HttpGet("Home/CanBeRouted")]
|
|
[SuppressPatchMatchingConvention]
|
|
public object SuppressPathMatching()
|
|
{
|
|
return "Hello world";
|
|
}
|
|
|
|
[HttpGet("Home/SuppressLinkGeneration", Name = nameof(SuppressLinkGeneration))]
|
|
[SuppressLinkGenerationConvention]
|
|
public object SuppressLinkGeneration() => "Hello world";
|
|
|
|
[HttpGet("Home/RouteToSuppressLinkGeneration")]
|
|
public IActionResult RouteToSuppressLinkGeneration() => RedirectToRoute(nameof(SuppressLinkGeneration));
|
|
|
|
[HttpGet("Home/RouteToSuppressPathMatching")]
|
|
public IActionResult RouteToSuppressPathMatching() => RedirectToRoute(nameof(SuppressPathMatching));
|
|
|
|
private class SuppressPatchMatchingConvention : Attribute, IActionModelConvention
|
|
{
|
|
public void Apply(ActionModel model)
|
|
{
|
|
var selector = model.Selectors.First(f => f.AttributeRouteModel.Template == "Home/CannotBeRouted");
|
|
selector.AttributeRouteModel.SuppressPathMatching = true;
|
|
}
|
|
}
|
|
|
|
private class SuppressLinkGenerationConvention : Attribute, IActionModelConvention
|
|
{
|
|
public void Apply(ActionModel model)
|
|
{
|
|
model.Selectors[0].AttributeRouteModel.SuppressLinkGeneration = true;
|
|
}
|
|
}
|
|
}
|
|
} |