我有一个ASP.Net MVC搜索页面。这是一个相当标准的列表,但有几个下拉列表可以过滤结果。这些下拉列表和搜索文本输入标记都包含在表单标记中。
我还有一个“添加新[实体]”超链接。超链接转到“创建”视图。
问题是,搜索表单中的下拉列表还会指定“创建”视图中某些字段的值。所以我需要将它们的值传递给Create表单。
最简单的方法(我知道)将传递Add New超链接的查询字符串中的相关值。
我可以通过每次下拉列表更改时更改链接的HREF值来实现此目的。但是这涉及到几个事件处理程序,并且一些下拉列表已经有其他事件处理程序与它们相关联。 (两个下拉列表之间存在依赖关系,只是为了使事情变得更复杂。)
我想要做的是更改查询字符串 - 收集下拉列表的当前值并更改它 - 在超链接的单击和超链接的实际执行之间。或者模仿发生的事情。
这可能吗?这是一个好主意,还是我应该坚持使用多个事件处理程序来改变HREF?
答案 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" />
}