我有一个NameValueCollection,并希望迭代值.目前,我正在这样做,但似乎应该有一个更简洁的方法来做到这一点:
NameValueCollection nvc = new NameValueCollection();
nvc.Add("Test", "Val1");
nvc.Add("Test2", "Val1");
nvc.Add("Test2", "Val1");
nvc.Add("Test2", "Val2");
nvc.Add("Test3", "Val1");
nvc.Add("Test4", "Val4");
foreach (string s in nvc)
foreach (string v in nvc.GetValues(s))
Console.WriteLine("{0} {1}", s, v);
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
在那儿?
我想在我的视图上应用不同的排序和过滤我想我将通过查询字符串传递排序和过滤参数:
@Html.ActionLink("Name", "Index", new { SortBy= "Name"})
Run Code Online (Sandbox Code Playgroud)
这种简单的结构允许我排序.View在查询字符串中返回:
?SortBy=Name
Run Code Online (Sandbox Code Playgroud)
现在我想添加过滤,我希望我的查询字符串最终结束
?SortBy=Name&Filter=Something
Run Code Online (Sandbox Code Playgroud)
如何将其他参数添加到已存在的列表中ActionLink?例如:
user requests /Index/
Run Code Online (Sandbox Code Playgroud)
视图有
@Html.ActionLink("Name", "Index", new { SortBy= "Name"})
Run Code Online (Sandbox Code Playgroud)
和
@Html.ActionLink("Name", "Index", new { FilterBy= "Name"})
Run Code Online (Sandbox Code Playgroud)
链接:第一个看起来像/Index/?SortBy=Name,第二个是 /Index/?FilterBy=Name
我希望当用户按下排序链接后他应用了一些过滤 - 过滤不会丢失,所以我需要一种方法来组合我的参数.我的猜测是应该有一种方法不解析查询字符串,但从一些MVC对象获取参数集合.
我正在研究一个看似简单的问题:在我的授权过滤器中,如果不满足其中一个条件,我正在检查一些事情,我需要从查询字符串中删除某些值并将用户重定向到结果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)
首先,它不起作用,即使它确实如此,它也很难看.必须有更好的方法,对吧?我在这里错过了什么?
我正在使用Request.Form搜索控件名称.
当然我知道你可以使用AllKeys迭代所有值,你也可以做Form ["controlName"].
但是我的一些控件名称是动态的,能够执行以下操作会很有用:
1)获取名称以特定前缀开头的集合中的控件子集2)搜索与模式匹配的控件名称,就像使用正则表达式一样.
但我无法看到做这样的事情.
NB我知道如何使用FindControl for ASP.NET控件,但这些是标准的HTML.