Jquery 获取请求MVC查询字符串

Jquery 获取请求MVC查询字符串,jquery,razor,asp.net-mvc-4,httpwebrequest,asp.net-mvc-routing,Jquery,Razor,Asp.net Mvc 4,Httpwebrequest,Asp.net Mvc Routing,我使用的是ASP.NETMVC,我有一个用户输入的搜索表单。提交表单时,表单中的数据将传递给my index操作,以返回显示请求数据的视图 在索引操作方法中,我使用输入的数据更新视图 用户不必输入表单的所有字段,因此我的操作接收的数据的参数键为空。但我只想要url中有值的键 我得到的,不是令人满意的例子: 正如您所看到的,name和age没有值。如果我去掉地址栏中的数据,正确的数据仍然会正确显示,这是预期的 我想要的网址是 在Is进入action方法之前,是否有办法解析查询字符串。也许使用A

我使用的是ASP.NETMVC,我有一个用户输入的搜索表单。提交表单时,表单中的数据将传递给my index操作,以返回显示请求数据的视图

在索引操作方法中,我使用输入的数据更新视图

用户不必输入表单的所有字段,因此我的操作接收的数据的参数键为空。但我只想要url中有值的键

我得到的,不是令人满意的例子:

正如您所看到的,name和age没有值。如果我去掉地址栏中的数据,正确的数据仍然会正确显示,这是预期的

我想要的网址是


在Is进入action方法之前,是否有办法解析查询字符串。也许使用Ajax来截断不必要的键?但是我怎样才能提交并进入页面呢?

在这种情况下,您可以首先在搜索按钮上调用一个javascript函数,单击该函数将构造查询字符串和url,并激发到指定的
操作

您可以通过javascript执行此操作,但构造查询字符串(我假设表单的类型是GET)这是浏览器的工作,我不会干涉它,也不会麻烦确保javascript在所有浏览器上都能工作


尽管效率较低,但我还是会在MVC控制器中使用this.RedirectToAction调用,并将请求重定向到未定义参数的方法重载(即url仅包含具有值的参数)。这样,用户的浏览器将有一个额外的往返过程,因为它将首先从您的控制器接收重定向响应,但您不需要在客户端处理javascript。

您必须使用queryString吗??post可以是另一个好的选择。是的,查询字符串是必需的,因此搜索可能会被图书标记。因此,让按钮函数按照我想要的方式构造url,基本上表现为链接?你有重定向操作的示例吗?我不理解“参数未定义”部分,我如何将新查询传递给重定向操作?重定向操作('controller','Index',querystringdata')?我假设您有类似于
MyAction(字符串参数1、字符串参数2、字符串参数3等)
的内容,当参数为空时,其值为null或string.empty。对于您的特定示例,
name
将为空或null。如果访问
请求
的QueryString属性,它将为您提供一个
名称值集合
。迭代该过程,仅从具有值的参数构造一个
RouteValueDictionary
,然后使用接受RouteValueDictionary的RedirectToAction重载来重定向请求。