根据字段值动态生成超链接的查询字符串

时间:2011-12-02 15:56:19

标签: jquery asp.net-mvc asp.net-mvc-3

我有一个ASP.Net MVC搜索页面。这是一个相当标准的列表,但有几个下拉列表可以过滤结果。这些下拉列表和搜索文本输入标记都包含在表单标记中。

我还有一个“添加新[实体]”超链接。超链接转到“创建”视图。

问题是,搜索表单中的下拉列表还会指定“创建”视图中某些字段的值。所以我需要将它们的值传递给Create表单。

最简单的方法(我知道)将传递Add New超链接的查询字符串中的相关值。

我可以通过每次下拉列表更改时更改链接的HREF值来实现此目的。但是这涉及到几个事件处理程序,并且一些下拉列表已经有其他事件处理程序与它们相关联。 (两个下拉列表之间存在依赖关系,只是为了使事情变得更复杂。)

我想要做的是更改查询字符串 - 收集下拉列表的当前值并更改它 - 在超链接的单击和超链接的实际执行之间。或者模仿发生的事情。

这可能吗?这是一个好主意,还是我应该坚持使用多个事件处理程序来改变HREF?

2 个答案:

答案 0 :(得分:3)

为什么不在链接中添加事件处理程序并构造链接然后执行呢?

$("a").click(function(event) {
  event.preventDefault();

  var url = "www.whatever.com/";

  var addedVars = "?firstVar=" + $('#dropdown1').val() + "&secondVar=" + $('#dropdown2').val();

  window.location = url + addedVars;
});

答案 1 :(得分:1)

如果您可以使用“添加新”按钮,则可以使用带有两个独立提交按钮的表单,每个按钮都会调用不同的操作。

该博客描述了该技术 http://blog.ashmind.com/2010/03/15/multiple-submit-buttons-with-asp-net-mvc-final-solution/

类似的东西:

@using (Html.BeginForm("Action", "Post")) {

  <input type="submit" name="Search" value="Search" />
  <input type="submit" name="AddNew" value="Add New" />
}