More CR feedback on URL generation

This commit is contained in:
Ryan Nowak 2014-03-12 11:12:52 -07:00
parent 77a7bb58a6
commit 00f15669dc
5 changed files with 21 additions and 11 deletions

View File

@ -19,5 +19,15 @@ namespace MvcSample
{ {
return Url.Route(new { controller = "Home", action = "Details" }); return Url.Route(new { controller = "Home", action = "Details" });
} }
public string Link1()
{
return Url.Action("Index", "Home");
}
public string Link2()
{
return Url.Action("Link2");
}
} }
} }

View File

@ -37,7 +37,7 @@ namespace Microsoft.AspNet.Mvc
{ {
var viewContext = new ViewContext(context.HttpContext, ViewData, _serviceProvider) var viewContext = new ViewContext(context.HttpContext, ViewData, _serviceProvider)
{ {
Url = new DefaultUrlHelper(context.HttpContext, context.Router, context.RouteValues), Url = new UrlHelper(context.HttpContext, context.Router, context.RouteValues),
}; };
await view.RenderAsync(viewContext, writer); await view.RenderAsync(viewContext, writer);
} }
@ -49,7 +49,7 @@ namespace Microsoft.AspNet.Mvc
ViewEngineResult result = await _viewEngine.FindView(actionContext, viewName); ViewEngineResult result = await _viewEngine.FindView(actionContext, viewName);
if (!result.Success) if (!result.Success)
{ {
string locationsText = String.Join(Environment.NewLine, result.SearchedLocations); string locationsText = string.Join(Environment.NewLine, result.SearchedLocations);
const string message = @"The view '{0}' was not found. The following locations were searched:{1}."; const string message = @"The view '{0}' was not found. The following locations were searched:{1}.";
throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, message, viewName, locationsText)); throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, message, viewName, locationsText));
} }

View File

@ -61,12 +61,12 @@ namespace Microsoft.AspNet.Mvc
} }
else if (prop.Name == "Url" && prop.PropertyType == typeof(IUrlHelper)) else if (prop.Name == "Url" && prop.PropertyType == typeof(IUrlHelper))
{ {
var generator = new DefaultUrlHelper( var urlHelper = new UrlHelper(
actionContext.HttpContext, actionContext.HttpContext,
actionContext.Router, actionContext.Router,
actionContext.RouteValues); actionContext.RouteValues);
prop.SetValue(controller, generator); prop.SetValue(controller, urlHelper);
} }
} }

View File

@ -4,13 +4,13 @@ using Microsoft.AspNet.Routing;
namespace Microsoft.AspNet.Mvc namespace Microsoft.AspNet.Mvc
{ {
public class DefaultUrlHelper : IUrlHelper public class UrlHelper : IUrlHelper
{ {
private readonly HttpContext _httpContext; private readonly HttpContext _httpContext;
private readonly IRouter _router; private readonly IRouter _router;
private readonly IDictionary<string, object> _ambientValues; private readonly IDictionary<string, object> _ambientValues;
public DefaultUrlHelper(HttpContext httpContext, IRouter router, IDictionary<string, object> ambientValues) public UrlHelper([NotNull] HttpContext httpContext, [NotNull] IRouter router, [NotNull] IDictionary<string, object> ambientValues)
{ {
_httpContext = httpContext; _httpContext = httpContext;
_router = router; _router = router;

View File

@ -5,22 +5,22 @@ namespace Microsoft.AspNet.Mvc
{ {
public static string Action([NotNull] this IUrlHelper generator) public static string Action([NotNull] this IUrlHelper generator)
{ {
return generator.Action(null, null, null); return generator.Action(action: null, controller: null, values: null);
} }
public static string Action([NotNull] this IUrlHelper generator, string action) public static string Action([NotNull] this IUrlHelper generator, string action)
{ {
return generator.Action(action, null, null); return generator.Action(action: action, controller: null, values: null);
} }
public static string Action([NotNull] this IUrlHelper generator, string action, object values) public static string Action([NotNull] this IUrlHelper generator, string action, object values)
{ {
return generator.Action(action, null, values); return generator.Action(action: action, controller: null, values: values);
} }
public static string Action([NotNull] this IUrlHelper generator, string action, string controller) public static string Action([NotNull] this IUrlHelper generator, string action, string controller)
{ {
return generator.Action(action, controller, null); return generator.Action(action: action, controller: controller, values: null);
} }
} }
} }