WebHelpers.Mvc5 2.1.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package WebHelpers.Mvc5 --version 2.1.0
NuGet\Install-Package WebHelpers.Mvc5 -Version 2.1.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="WebHelpers.Mvc5" Version="2.1.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add WebHelpers.Mvc5 --version 2.1.0
#r "nuget: WebHelpers.Mvc5, 2.1.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install WebHelpers.Mvc5 as a Cake Addin
#addin nuget:?package=WebHelpers.Mvc5&version=2.1.0

// Install WebHelpers.Mvc5 as a Cake Tool
#tool nuget:?package=WebHelpers.Mvc5&version=2.1.0

WebHelpers.Mvc5

Build Status NuGet

A collection of helpers for ASP.NET MVC5.

CssRewriteUrlTransformAbsolute

Converts any URLs in the input to absolute using the application's base directory. The standard CssRewriteUrlTransform class doesn't use the application's absolute path required by many assets.

For example, url(../fonts/glyphicons.woff) is rewritten as url(Contoso/Content/fonts/glyphicons.woff) for an application whose base directory is Contoso.

.Include("~/Content/css/bootstrap.min.css", new CssRewriteUrlTransformAbsolute())

IsLinkActive

When building static navigation, there are two approaches to highlight the link of the current page as active. Either you can run some JavaScript to sniff out the URLs or you can build out an if statement for every link to determine whether or not to apply the class.

To make the second option easier, you can turn this:

<li class="@(ViewContext.RouteData.Values["Action"].ToString() == nameof(HomeController.Index) ? "active" : "")">
    <a href="@Url.Action("Index", "Home")"><i class="fa fa-link"></i> <span>Home</span></a>
</li>

into this:

<li class="@Url.IsLinkActive("Index", "Home")">
    <a href="@Url.Action("Index", "Home")"><i class="fa fa-link"></i> <span>Home</span></a>
</li>

IsTreeviewActive

Similar to IsLinkActive, this makes it easy to determine whether the treeview is the active link.

@{
    var treeviewActions = new Dictionary<string, string>
    {
        { "Action", "Controller" }
    };
}

<li class="treeview @Url.IsTreeviewActive(treeviewActions)">
    <a href="#"><i class="fa fa-cogs"></i> <span>Action</span> <i class="fa fa-angle-left pull-right"></i></a>
    <ul class="treeview-menu">
        <li class="@Url.IsLinkActive("Action", "Controller")">
            <a href="@Url.Action("Action", "Controller")"><i class="fa fa-trash"></i> <span>Action</span></a>
        </li>
    </ul>
</li>

AddVersion

Adds a cache-busting version number, which is the number of ticks since the last write time of the file, as a query parameter to the URL of the asset.

<img src="@Url.Content("~/Content/img/user.png").AddVersion()" />

outputs

/Content/img/user.png?v=636296810982047488

EnumHandler

Renders Enums as a frozen object in JavaScript to promote re-usability between the server and client.

Add to your Web.config:

<system.webServer>
    <handlers>
        <remove name="WebHelpers" />
        <add name="WebHelpers" verb="GET" path="WebHelpers.axd" type="WebHelpers.Mvc5.Enum.EnumHandler" preCondition="integratedMode" />
    </handlers>
</system.webServer>

Add to your _Layout.cshtml:

<script src="@EnumHandler.HandlerUrl"></script>

Then decorate your enum with the ExposeInJavaScript attribute:

[ExposeInJavaScript]
public enum MyEnum
{
    Test
}

Alternatively, you can specify the enums to include and exclude via configuration. This is helpful if you choose to keep your enums clean or if they reside in other libraries that can't take on this dependency. To do this, you can register them in your Global.asax.

protected void Application_Start()
{
    EnumHandler.EnumsToExpose.Include(typeof(MyEnum));
}

ClientIP

Gets the IP address of the client sending the request. This method will return the originating IP if specified by a proxy but makes no guarantee that this is the client's true IP address. Since these headers can be spoofed, you are encouraged to perform additional validation if you are using the IP in a sensitive context.

var ip = HttpContext.Current.Request.ClientIP();
Product Compatible and additional computed target framework versions.
.NET Framework net45 is compatible.  net451 was computed.  net452 was computed.  net46 was computed.  net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.1.1 13,325 10/15/2019
2.1.0 28,727 8/17/2018
2.0.0 6,706 8/15/2018
1.3.0 3,876 5/4/2018
1.2.0 18,015 11/9/2017
1.1.0 1,038 11/9/2017
1.0.0 5,600 7/23/2017