概述
??本文已經同步到《Asp.net Vnext 系列教程?》中]
?IValueProvider
根據ValueProvider獲取數據,在對數據進行綁定
代碼實現
?
?
private class CustomValueProvider : IValueProvider{//判斷否具有指定的前綴public Task<bool> ContainsPrefixAsync(string prefix){var result = string.Equals(prefix, "test", StringComparison.OrdinalIgnoreCase);return Task.FromResult(result);}//返回ValueProviderResultpublic Task<ValueProviderResult> GetValueAsync(string key){//進行綁定的值var value = "custom-value-provider-value";var result = new ValueProviderResult(value, value, CultureInfo.CurrentCulture);return Task.FromResult(result);}}
?
? ValueProvider工廠
?
public IValueProvider GetValueProvider(ValueProviderFactoryContext context){if (context.HttpContext.Request.Path.Value.Contains("TestValueProvider")){return new CustomValueProvider();}return null;}
控制器
public class HomeController{public string TestValueProvider(string test){return test;}}
啟動類
public class Startup{// For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=398940public void ConfigureServices(IServiceCollection services){services.AddSingleton<IMemoryCache, MemoryCache>();services.AddCaching();services.AddSession();services.AddMvc().Configure<MvcOptions>(options =>{//添加CustomValueProviderFactoryoptions.ValueProviderFactories.Insert(1, new CustomValueProviderFactory());});}