如何在ASP.NET Core 1.0中获取ValueProvider?

4
在MVC5中,我曾经像这样在控制器操作中获取ValueProvider:ValueProvider
public class ConfigurationsController : Controller
{
    public ActionResult Index()
    {
        var valueProvider = this.ValueProvider;
        var someValue = valueProvider.GetValue("someKey");
        return View();
    }
}

但是在Asp.NET Core 1.0中似乎已经消失了。是否有一种方法可以在新版本中获取ValueProvider呢?

提前致谢。


有点好奇,你为什么要在这里明确地使用值提供程序?我问这个问题是因为在ASP.NET Core 1.0中可能有新的支持,甚至根本不需要这样做! - Kiran
我需要手动将值提供程序的绑定值绑定到模型中,因为我不知道绑定器之前的模型。请查看此代码以了解我的目标:http://csharppad.com/gist/5ab037c3a2112d2a0fb0a76b94cf6023 - Vietprogrammer
1个回答

3
您可以使用ControllerContext创建一个CompositeValueProvider
var valueProvider = await CompositeValueProvider.CreateAsync(ControllerContext);

CompositeValueProvider是Microsoft.AspNetCore.Mvc.ModelBinding.IValueProvider的一个实现,它的值来自于一组Microsoft.AspNetCore.Mvc.ModelBinding.IValueProviders。

示例

[HttpPost]
public async Task<IActionResult> SomeAction()
{
    var valueProvider = await CompositeValueProvider.CreateAsync(ControllerContext);
    var someValue = valueProvider.GetValue("foo");
    return View();
}

谢谢,我已经检查了 Mvc 的源代码,并发现它与你的答案相同! - Vietprogrammer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接