diff --git a/src/Microsoft.AspNet.Mvc.Core/UrlHelper.cs b/src/Microsoft.AspNet.Mvc.Core/UrlHelper.cs
index 186cceaf7a..97ed3e0096 100644
--- a/src/Microsoft.AspNet.Mvc.Core/UrlHelper.cs
+++ b/src/Microsoft.AspNet.Mvc.Core/UrlHelper.cs
@@ -122,12 +122,19 @@ namespace Microsoft.AspNet.Mvc
///
public virtual string Content(string contentPath)
{
- if (contentPath == null)
+ if (string.IsNullOrEmpty(contentPath))
{
return null;
}
+ else if (contentPath[0] == '~')
+ {
+ var segment = new PathString(contentPath.Substring(1));
+ var applicationPath = _httpContext.Request.PathBase;
- return GenerateClientUrl(_httpContext.Request.PathBase, contentPath);
+ return applicationPath.Add(segment).Value;
+ }
+
+ return contentPath;
}
///
@@ -142,17 +149,6 @@ namespace Microsoft.AspNet.Mvc
});
}
- private static string GenerateClientUrl([NotNull] PathString applicationPath,
- [NotNull] string path)
- {
- if (path.StartsWith("~/", StringComparison.Ordinal))
- {
- var segment = new PathString(path.Substring(1));
- return applicationPath.Add(segment).Value;
- }
- return path;
- }
-
private string GenerateUrl(string protocol, string host, string path, string fragment)
{
// We should have a robust and centrallized version of this code. See HttpAbstractions#28
diff --git a/test/Microsoft.AspNet.Mvc.Core.Test/UrlHelperTest.cs b/test/Microsoft.AspNet.Mvc.Core.Test/UrlHelperTest.cs
index 0abc6e6216..9794c8e971 100644
--- a/test/Microsoft.AspNet.Mvc.Core.Test/UrlHelperTest.cs
+++ b/test/Microsoft.AspNet.Mvc.Core.Test/UrlHelperTest.cs
@@ -45,6 +45,7 @@ namespace Microsoft.AspNet.Mvc
[InlineData("/", "~/", "/")]
[InlineData("/myapproot", "~/", "/myapproot/")]
[InlineData("", "~/Home/About", "/Home/About")]
+ [InlineData("/", "~", "/")]
[InlineData("/myapproot", "~/Content/bootstrap.css", "/myapproot/Content/bootstrap.css")]
public void Content_ReturnsAppRelativePath_WhenItStartsWithToken(string appRoot,
string contentPath,