[Fixes #2896] Made UrlHelper.Content behavior consistent with MVC 5

This commit is contained in:
Ajay Bhargav Baaskaran 2015-08-07 15:17:19 -07:00
parent 94fad918a3
commit b5237b29b5
2 changed files with 10 additions and 13 deletions

View File

@ -122,12 +122,19 @@ namespace Microsoft.AspNet.Mvc
/// <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 />
@ -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

View File

@ -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,