Skip to content
This repository has been archived by the owner on Dec 14, 2018. It is now read-only.

Made UrlHelper.Content behavior consistent with MVC 5 #2936

Merged
merged 1 commit into from
Aug 7, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 9 additions & 13 deletions src/Microsoft.AspNet.Mvc.Core/UrlHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -122,12 +122,19 @@ protected virtual string GeneratePathFromRoute(string routeName, IDictionary<str
/// <inheritdoc />
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;
}

/// <inheritdoc />
Expand All @@ -142,17 +149,6 @@ public virtual string Link(string routeName, object values)
});
}

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
Expand Down
1 change: 1 addition & 0 deletions test/Microsoft.AspNet.Mvc.Core.Test/UrlHelperTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ public void Content_ReturnsContentPath_WhenItDoesNotStartWithToken(string appRoo
[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,
Expand Down