CR feedback

This commit is contained in:
Ryan Nowak 2014-03-11 12:13:52 -07:00
parent 12985c19ee
commit 77a7bb58a6
9 changed files with 24 additions and 18 deletions

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 DefaultRenderUrl(context.HttpContext, context.Router, context.RouteValues), Url = new DefaultUrlHelper(context.HttpContext, context.Router, context.RouteValues),
}; };
await view.RenderAsync(viewContext, writer); await view.RenderAsync(viewContext, writer);
} }

View File

@ -14,7 +14,7 @@ namespace Microsoft.AspNet.Mvc
public HttpContext Context { get; set; } public HttpContext Context { get; set; }
public IRenderUrl Url { get; set; } public IUrlHelper Url { get; set; }
public ViewData<object> ViewData { get; set; } public ViewData<object> ViewData { get; set; }

View File

@ -67,7 +67,13 @@ namespace Microsoft.AspNet.Mvc
{ {
Action = action, Action = action,
}; };
var actionContext = new ActionContext(context.HttpContext, null, context.RouteValues, action);
// Issues #60 & #65 filed to deal with the ugliness of passing null here.
var actionContext = new ActionContext(
httpContext: context.HttpContext,
router: null,
routeValues: context.RouteValues,
actionDescriptor: action);
var actionBindingContext = await _bindingProvider.GetActionBindingContextAsync(actionContext); var actionBindingContext = await _bindingProvider.GetActionBindingContextAsync(actionContext);
foreach (var parameter in action.Parameters.Where(p => p.ParameterBindingInfo != null)) foreach (var parameter in action.Parameters.Where(p => p.ParameterBindingInfo != null))

View File

@ -59,9 +59,9 @@ namespace Microsoft.AspNet.Mvc
{ {
prop.SetValue(controller, modelState); prop.SetValue(controller, modelState);
} }
else if (prop.Name == "Url" && prop.PropertyType == typeof(IRenderUrl)) else if (prop.Name == "Url" && prop.PropertyType == typeof(IUrlHelper))
{ {
var generator = new DefaultRenderUrl( var generator = new DefaultUrlHelper(
actionContext.HttpContext, actionContext.HttpContext,
actionContext.Router, actionContext.Router,
actionContext.RouteValues); actionContext.RouteValues);

View File

@ -4,20 +4,20 @@ using Microsoft.AspNet.Routing;
namespace Microsoft.AspNet.Mvc namespace Microsoft.AspNet.Mvc
{ {
public class DefaultRenderUrl : IRenderUrl public class DefaultUrlHelper : 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 DefaultRenderUrl(HttpContext httpContext, IRouter router, IDictionary<string, object> ambientValues) public DefaultUrlHelper(HttpContext httpContext, IRouter router, IDictionary<string, object> ambientValues)
{ {
_httpContext = httpContext; _httpContext = httpContext;
_router = router; _router = router;
_ambientValues = ambientValues; _ambientValues = ambientValues;
} }
public virtual string Action(string action, string controller, object values) public string Action(string action, string controller, object values)
{ {
var valuesDictionary = new RouteValueDictionary(values); var valuesDictionary = new RouteValueDictionary(values);
@ -34,12 +34,12 @@ namespace Microsoft.AspNet.Mvc
return RouteCore(valuesDictionary); return RouteCore(valuesDictionary);
} }
public virtual string Route(object values) public string Route(object values)
{ {
return RouteCore(new RouteValueDictionary(values)); return RouteCore(new RouteValueDictionary(values));
} }
protected virtual string RouteCore(IDictionary<string, object> values) private string RouteCore(IDictionary<string, object> values)
{ {
var context = new VirtualPathContext(_httpContext, _ambientValues, values); var context = new VirtualPathContext(_httpContext, _ambientValues, values);
var path = _router.GetVirtualPath(context); var path = _router.GetVirtualPath(context);

View File

@ -16,7 +16,7 @@ namespace Microsoft.AspNet.Mvc.Razor
protected TextWriter Output { get; set; } protected TextWriter Output { get; set; }
public IRenderUrl Url public IUrlHelper Url
{ {
get { return Context == null ? null : Context.Url; } get { return Context == null ? null : Context.Url; }
} }

View File

@ -1,7 +1,7 @@
 
namespace Microsoft.AspNet.Mvc namespace Microsoft.AspNet.Mvc
{ {
public interface IRenderUrl public interface IUrlHelper
{ {
string Action(string action, string controller, object values); string Action(string action, string controller, object values);

View File

@ -1,24 +1,24 @@
 
namespace Microsoft.AspNet.Mvc namespace Microsoft.AspNet.Mvc
{ {
public static class RenderUrlExtension public static class UrlHelperExtensions
{ {
public static string Action([NotNull] this IRenderUrl generator) public static string Action([NotNull] this IUrlHelper generator)
{ {
return generator.Action(null, null, null); return generator.Action(null, null, null);
} }
public static string Action([NotNull] this IRenderUrl generator, string action) public static string Action([NotNull] this IUrlHelper generator, string action)
{ {
return generator.Action(action, null, null); return generator.Action(action, null, null);
} }
public static string Action([NotNull] this IRenderUrl 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, null, values);
} }
public static string Action([NotNull] this IRenderUrl 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, controller, null);
} }

View File

@ -16,7 +16,7 @@ namespace Microsoft.AspNet.Mvc
public IServiceProvider ServiceProvider { get; private set; } public IServiceProvider ServiceProvider { get; private set; }
public IRenderUrl Url { get; set; } public IUrlHelper Url { get; set; }
public ViewData ViewData { get; private set; } public ViewData ViewData { get; private set; }
} }