0

我正在使用 ASP.NET MVC,我有一个用于用户输入的搜索表单。提交表单时,表单中的数据将传递给我的索引操作,以返回显示请求数据的视图。

在我的 Index 操作方法中,我使用输入的数据来更新视图。

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

我得到的,不可取的例子:

http://www.domain.com/searchresults?name=&age=&id=98787879

如您所见,姓名和年龄没有值。如果我去掉地址栏中的那些,正确的数据仍然可以正确显示,这是预期的。

我想要的网址只是

http://www.domain.com/searchresults?id=98787879

有没有办法在进入操作方法之前解析查询字符串。也许使用 Ajax 截断不必要的键?但是那我怎么能提交它并转到页面呢?

4

2 回答 2

1

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

于 2013-02-23T06:39:50.817 回答
1

您可以通过 javascript 执行此操作,但构建查询字符串(我假设表单的类型是 GET)是浏览器的工作,我不会干扰它或陷入确保您的 javascript 适用于所有问题的麻烦浏览器。

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

于 2013-02-23T06:51:12.393 回答