我正在使用ASP.NET MVC,我有一个用户输入的搜索表单。提交表单时,表单中的数据将传递给我的索引操作,以返回显示所请求数据的视图。
在我的索引操作方法中,我使用输入的数据来更新视图。
用户不必输入表单的所有字段,因此我的操作接收的数据具有空的参数键。但我只想要在网址中包含值的键。
我得到的,不可取的例子:
http://www.domain.com/searchresults?name=&age=&id=98787879
正如您所看到的,姓名和年龄没有价值。如果我摆脱地址栏中的那些,正确的数据仍然可以正确显示。
我想要的网址只是
http://www.domain.com/searchresults?id=98787879
有没有办法在进入action方法之前解析查询字符串。也许使用Ajax来截断不必要的密钥?但那我怎么能提交并转到页面呢?
答案 0 :(得分:1)
在这种情况下,您可以先在搜索按钮上调用javascript函数,然后单击该函数构建查询字符串和网址并触发指定的Action
答案 1 :(得分:1)
你可以通过javascript做到这一点但是构建查询字符串(我假设表单的类型是GET)是浏览器的工作,我不会干扰它或者遇到确保你的javascript的麻烦适用于所有浏览器。
即使效率较低,我也只是在MVC控制器中使用this.RedirectToAction调用,并将请求重定向到未定义参数的方法的重载(即url只有具有值的参数)。这样,用户的浏览器将有额外的往返,因为它将首先从您的控制器接收重定向响应,但您不需要在客户端处理javascript。