我实现了一个自定义值提供程序。我有一个包含查询字符串的链接,
例如ads?lid=val
和我的操作定义
public async ReturnType ads(int lid=0)
我在 Global.asax 中注册了价值提供程序,例如
ValueProviderFactories.Factories.Add(new Listhell.CODE.CustomValueProviderFactory());
但是当我单击控制器上的链接时,我得到查询字符串值,但没有cookie的值
如何使 mvc 使用自定义值提供程序将 cookie 值传递给控制器而不是默认行为?
有几个内置的提供程序,如查询字符串等。这些提供程序从链的开头逐个调用,直到其中一些能够提供值。
因此,您必须通过以下代码行在默认值提供程序链的顶部注册"CustomValueProviderFactory":
ValueProviderFactories.Factories.Insert(0, new Listhell.CODE.CustomValueProviderFactory());
因此,首先调用自定义值提供程序,您应该从需要的任何位置获取值。以下代码行演示如何从 cookie 获取此值:
public class CookieValueProvider: IValueProvider
{
public bool ContainsPrefix(string prefix)
{
return HttpContext.Current.Request.Cookies[prefix] != null;
}
public ValueProviderResult GetValue(string key)
{
if(HttpContext.Current.Request.Cookies[key] == null)
return null;
return new ValueProviderResult(HttpContext.Current.Request.Cookies[key],
HttpContext.Current.Request.Cookies[key].ToString(), CultureInfo.CurrentCulture);
}
}
希望它有帮助。