は、それはそれを行うための最善の方法ではないかもしれないが、あなたはそのようなカスタムルート属性でそれを達成することができます
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = false)]
public sealed class MultiRouteAttribute : Attribute, IDirectRouteFactory
{
public string Name { get; set; }
public int Order { get; set; }
public string[] Templates { get; private set; }
public MultiRouteAttribute(string[] template)
{
this.Templates = template;
}
RouteEntry IDirectRouteFactory.CreateRoute(DirectRouteFactoryContext context)
{
var template = "~/{Type:regex(" + string.Join("|", Templates) + ")}";
IDirectRouteBuilder builder = context.CreateBuilder(template);
builder.Name = this.Name;
builder.Order = this.Order;
return builder.Build();
}
}
そして、あなたはそのようにそれを使用することができます:
[MultiRoute(new[] { "index1", "index2" })]
public ActionResult Index()
{
return View();
}
代わりに:
[Route("~/index1")]
[Route("~/index2")]
public ActionResult Index()
{
return View();
}
このソリューションは、組み込みのRouteAttribute
よりも制限されています。ルート内で正規表現を使用する
まず第一に、パラメータ、デフォルト値、および制約を追加する場合はどうですか? –