强制 MVC 使用基于 Cookie 的自定义值提供程序,而不是默认使用查询字符串



我实现了一个自定义值提供程序。我有一个包含查询字符串的链接,

例如
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);
}
}

希望它有帮助。

相关内容

  • 没有找到相关文章

最新更新