相关疑难解决方法(0)

使LINQ Query可以访问NameValueCollection

如何使NameValueCollectionLINQ查询运算符可以访问,例如where,join,groupby?

我试过以下:

private NameValueCollection RequestFields()
{
    NameValueCollection nvc = new NameValueCollection()
                                  {
                                      {"emailOption: blah Blah", "true"},
                                      {"emailOption: blah Blah2", "false"},
                                      {"nothing", "false"},
                                      {"nothinger", "true"}
                                  };
    return nvc;

}

public void GetSelectedEmail()
{
    NameValueCollection nvc = RequestFields();
    IQueryable queryable = nvc.AsQueryable();
}
Run Code Online (Sandbox Code Playgroud)

但我得到一个ArgumentException告诉我源不是IEnumerable <>.

.net linq namevaluecollection

61
推荐指数
4
解决办法
3万
查看次数

从MVC3中的querystring中删除一个值并重定向到生成的URL

我正在研究一个看似简单的问题:在我的授权过滤器中,如果不满足其中一个条件,我正在检查一些事情,我需要从查询字符串中删除某些值并将用户重定向到结果URL.但是,这给了我一些比我想要的更多的问题.它看起来像这样:

public void OnAuthorization(AuthorizationContext filterContext)
{
    if (!SomeCondition()) {
        RedirectToCleanUrl(filterContext);
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的RedirectToCleanUrl中,我正在剥离查询字符串并尝试将它们重定向到新的URL.它看起来像这样:

private void RedirectToCleanUrl(AuthorizationContext filterContext)
{
    var queryStringParams = new NameValueCollection(filterContext.HttpContext.Request.QueryString);

    // Stripping the key
    queryStringParams.Remove("some_key");

    var routeValueDictionary = new RouteValueDictionary();

    foreach (string x in queryStringParams)
    {
        routeValueDictionary.Add(x, queryStringParams[x]);
    }

    foreach (var x in filterContext.RouteData.Values)
    {
        routeValueDictionary.Add(x.Key, x.Value);
    }

    filterContext.Result = new RedirectToRouteResult(routeValueDictionary);
}
Run Code Online (Sandbox Code Playgroud)

首先,它不起作用,即使它确实如此,它也很难看.必须有更好的方法,对吧?我在这里错过了什么?

c# asp.net-mvc asp.net-mvc-3

10
推荐指数
1
解决办法
8465
查看次数