EndpointHelpers 1.0.0
See the version list below for details.
dotnet add package EndpointHelpers --version 1.0.0
NuGet\Install-Package EndpointHelpers -Version 1.0.0
<PackageReference Include="EndpointHelpers" Version="1.0.0" />
<PackageVersion Include="EndpointHelpers" Version="1.0.0" />
<PackageReference Include="EndpointHelpers" />
paket add EndpointHelpers --version 1.0.0
#r "nuget: EndpointHelpers, 1.0.0"
#:package EndpointHelpers@1.0.0
#addin nuget:?package=EndpointHelpers&version=1.0.0
#tool nuget:?package=EndpointHelpers&version=1.0.0
EndpointHelpers
EndpointHelpers is a Roslyn source generator that creates strongly-typed helpers for ASP.NET Core MVC URL generation. It generates:
IUrlHelperhelpers with action methods per controller.LinkGeneratorhelpers withGet{Action}Pathmethods, includingHttpContextoverloads.- Extension properties on
IUrlHelperandLinkGeneratorto access the helpers. - Attribute types used to control generation.
This package ships only a source generator and generated code. There is no runtime dependency.
Example
Without the generator
<a href="@Url.Action(
action: "Details",
controller: "Orders",
values: new { orderId = 123, source = "dashboard" }
)">
View order
</a>
With the generator enabled
<a href="@Url.Orders.Details(123, "dashboard")">
View order
</a>
Install
Add the NuGet package as an analyzer reference:
<ItemGroup>
<PackageReference Include="EndpointHelpers" Version="1.0.0" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
</ItemGroup>
Quick Start
Enable generation at the assembly level:
using EndpointHelpers;
[assembly: GenerateUrlHelper]
[assembly: GenerateLinkGenerator]
Or apply to a specific controller:
using EndpointHelpers;
[GenerateUrlHelper]
[GenerateLinkGenerator]
public class HomeController : Controller
{
public IActionResult Index() => View();
public IActionResult Privacy() => View();
}
Or only to a specific action:
using EndpointHelpers;
public class HomeController : Controller
{
[GenerateUrlHelper]
public IActionResult Index() => View();
public IActionResult Privacy() => View();
}
Attributes and Scope
Generation can be enabled at different scopes:
- Assembly:
[assembly: GenerateUrlHelper]or[assembly: GenerateLinkGenerator]. - Controller:
[GenerateUrlHelper]or[GenerateLinkGenerator]on the controller class. - Action:
[GenerateUrlHelper]or[GenerateLinkGenerator]on a specific action method.
You can exclude methods using:
[UrlHelperIgnore][LinkGeneratorIgnore][NonAction](standard ASP.NET Core MVC attribute)
Behavior
- Controllers are discovered by name: non-abstract classes ending with
Controller. - Only public, ordinary methods are included.
- Generated helpers are placed in the
EndpointHelpersnamespace. - Extension properties use the controller name without the
Controllersuffix.
Controller and action discovery
[GenerateUrlHelper]
[GenerateLinkGenerator]
public class OrdersController : Controller
{
public IActionResult Index() => View();
public IActionResult Details(int orderId, string? source) => View();
}
Generated surface
Url.Orders.Index();
Url.Orders.Details(orderId: 123, source: "dashboard");
LinkGenerator.Orders.GetDetailsPath(123, "dashboard");
LinkGenerator.Orders.GetIndexPath();
LinkGenerator.Orders.GetDetailsPath(httpContext, 123, "dashboard");
Example Project
See example/EndpointHelpers.Sample for a minimal MVC app using both generators.
License
GNU General Public License
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Microsoft.CodeAnalysis.CSharp (>= 4.3.0)
- Microsoft.CodeAnalysis.CSharp.Workspaces (>= 4.3.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.