我实施了自定义值提供程序。我有一个包含查询字符串的链接,如
ads?lid=val
和我的行动定义
public async ReturnType ads(int lid=0)
我在Global.asax中注册了价值提供者,如
ValueProviderFactories.Factories.Add(new Listhell.CODE.CustomValueProviderFactory());
但是当我点击控制器上的链接时,我会获得查询字符串值而不是cookie&#39>
如何让mvc使用自定义值提供程序将cookie值传递给控制器而不是默认行为?
答案 0 :(得分:0)
有几个内置提供程序,比如查询字符串等。这些提供程序从链的开始逐个调用,直到其中一些提供者能够提供值。
所以你必须注册" 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);
}
}
希望它有所帮助。