如何从查询字符串参数中消除额外的值?

时间:2014-09-20 17:25:28

标签: c# javascript asp.net-mvc-4 cross-browser

我正在开发一个网站,它显示来自数据库的数据并以网格显示给用户,然后有一些过滤器,如员工类型,支付等级e.t.c。

要求是用户应该能够通过复制URL并将其发送给某人来共享过滤结果,因此我使用Form.Get方法允许值通过查询字符串传递给Action方法。

一切正常,只有URL附加空复选框的值以及例如Employee类型的URL有3个复选框A类,B类和C类,假设用户只检查过A类,即URL生成的是:http://sitename.com/?classA=true&classB=false&classC=false

有没有办法可以从QS中删除这些参数,因为我被要求用复选框替换国家/地区下拉菜单,以便用户可以组合搜索,这样URL将继续附加到所有未选择的国家/地区作为好吧,我将手动迭代每个值以过滤后端的记录。

提前感谢您的时间。

2 个答案:

答案 0 :(得分:0)

好吧......我不是很熟悉wif c# 但是HtmlInputCheckBox类可以为你做...

或者只是用类似

的语言写一些简短的脚本
if(value = false): cut the "&key=value" < (string) pair off
goto next

答案 1 :(得分:0)

我对c#不太了解,但这是在PHP中完成的。我相信你会在C#中找到类似的方法。

如果需要为其传递多个值,可以在查询字符串中定义键:

键[] =值1&安培;键[] =值2&安培;键[] =值N

在您的情况下,如果选择了classA和classB: http://sitename.com/?class[]=classA&class[]=classB

PHP就是这样读取的:

$_GET["class"] = [
    0 => "classA",
    1 => "classB"
];

这样,您只能在URL中选择所选参数。

更新:用Google搜索C#,不确定它是否是最佳方式。

例如:http://sitename.com/?class=classA&class=classB

将参数作为字符串数组:

public Example(string[] a)
{
     string first = a[0]; // classA
     string second = a[1]; // classB
     return View();
}