4

In MVC5, I used to obtain a ValueProvider within a Controller Action like this:

public class ConfigurationsController : Controller
{
    public ActionResult Index()
    {
        var valueProvider = this.ValueProvider;
        var someValue = valueProvider.GetValue("someKey");
        return View();
    }
}

But it seems to be gone in Asp.NET Core 1.0. Is there a way to get the ValueProvider in the new version?

Thanks in advance

Dandré
  • 2,053
  • 3
  • 18
  • 38
  • Curious, why are you trying to use the value provider explicitly here? I ask as there could be new support in ASP.NET Core 1.0 for which you might not even need to do this! – Kiran Jul 10 '16 at 16:13
  • I need binding value from value provider to a model manually. Because I do not know model to binder before. Please explorer this code to undestand my target: http://csharppad.com/gist/5ab037c3a2112d2a0fb0a76b94cf6023 – Vietprogrammer Jul 11 '16 at 00:49

1 Answers1

3

You can create a CompositeValueProvider using ControllerContext.

var valueProvider = await CompositeValueProvider.CreateAsync(ControllerContext);

CompositeValueProvider represents Microsoft.AspNetCore.Mvc.ModelBinding.IValueProvider whose values come from a collection of Microsoft.AspNetCore.Mvc.ModelBinding.IValueProviders.

Example

[HttpPost]
public async Task<IActionResult> SomeAction()
{
    var valueProvider = await CompositeValueProvider.CreateAsync(ControllerContext);
    var someValue = valueProvider.GetValue("foo");
    return View();
}
tmg
  • 19,895
  • 5
  • 72
  • 76