Fixing action selection with complex types - MVC scenarios with more than one parameter are broken right now
This commit is contained in:
parent
88be38a506
commit
b9dbb6fe57
|
|
@ -1,4 +1,5 @@
|
||||||
using Microsoft.AspNet.Mvc;
|
using Microsoft.AspNet.Mvc;
|
||||||
|
using MvcSample.Web.Models;
|
||||||
|
|
||||||
namespace MvcSample.Web
|
namespace MvcSample.Web
|
||||||
{
|
{
|
||||||
|
|
@ -26,5 +27,22 @@ namespace MvcSample.Web
|
||||||
{
|
{
|
||||||
return _result.Content("Get(id, name)", null, null);
|
return _result.Content("Get(id, name)", null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ActionResult WithUser()
|
||||||
|
{
|
||||||
|
return _result.Content("WithUser()", null, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Called for all posts regardless of values provided
|
||||||
|
[HttpPost]
|
||||||
|
public ActionResult WithUser(User user)
|
||||||
|
{
|
||||||
|
return _result.Content("WithUser(User)", null, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ActionResult WithUser(int projectId, User user)
|
||||||
|
{
|
||||||
|
return _result.Content("WithUser(int, User)", null, null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ using System.Diagnostics.Contracts;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNet.Mvc.Core;
|
using Microsoft.AspNet.Mvc.Core;
|
||||||
|
using Microsoft.AspNet.Mvc.ModelBinding;
|
||||||
using Microsoft.AspNet.Routing;
|
using Microsoft.AspNet.Routing;
|
||||||
using Microsoft.Framework.DependencyInjection;
|
using Microsoft.Framework.DependencyInjection;
|
||||||
|
|
||||||
|
|
@ -56,10 +57,6 @@ namespace Microsoft.AspNet.Mvc
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
else if (matching.Count == 1)
|
|
||||||
{
|
|
||||||
return matching[0];
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return await SelectBestCandidate(context, matching);
|
return await SelectBestCandidate(context, matching);
|
||||||
|
|
@ -99,6 +96,11 @@ namespace Microsoft.AspNet.Mvc
|
||||||
|
|
||||||
foreach (var parameter in action.Parameters.Where(p => p.ParameterBindingInfo != null))
|
foreach (var parameter in action.Parameters.Where(p => p.ParameterBindingInfo != null))
|
||||||
{
|
{
|
||||||
|
if (!ValueProviderResult.CanConvertFromString(parameter.ParameterBindingInfo.ParameterType))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (await actionBindingContext.ValueProvider.ContainsPrefixAsync(parameter.ParameterBindingInfo.Prefix))
|
if (await actionBindingContext.ValueProvider.ContainsPrefixAsync(parameter.ParameterBindingInfo.Prefix))
|
||||||
{
|
{
|
||||||
candidate.FoundParameters++;
|
candidate.FoundParameters++;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue