using JetBrains.Annotations;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Routing;
namespace StardewModdingAPI.Web.Framework
{
/// Provides extensions on ASP.NET Core types.
public static class Extensions
{
/// Get a URL with the absolute path for an action method. Unlike , only the specified are added to the URL without merging values from the current HTTP request.
/// The URL helper to extend.
/// The name of the action method.
/// The name of the controller.
/// An object that contains route values.
/// The generated URL.
public static string PlainAction(this IUrlHelper helper, [AspMvcAction] string action, [AspMvcController] string controller, object values = null)
{
RouteValueDictionary valuesDict = new RouteValueDictionary(values);
foreach (var value in helper.ActionContext.RouteData.Values)
{
if (!valuesDict.ContainsKey(value.Key))
valuesDict[value.Key] = null; // explicitly remove it from the URL
}
return helper.Action(action, controller, valuesDict);
}
}
}