2010-02-10 74 views
3

我有一个代码,黑色在我的MVC观点如下:下拉列表onchange事件和AJAX在MVC

<%using (Ajax.BeginForm("MyAction", new { action = "MyAction", controller = "Home", id = ViewData["selected"].ToString() }, new AjaxOptions { UpdateTargetId = "Div1" })) 
    { %> 
      <%=Html.DropDownList("ddl", ViewData["MyList"] as SelectList, new { onchange = "this.form.submit()" })%> 
       <%} %> 

我想设置的ViewData的值“选择”],这样我可以把它送到期望的行动。 任何人都可以请建议我如何做到这一点?

谢谢!

回答

11

而不是使用表单,为什么不在你的下拉菜单中使用jQuery onChange事件?

$(document).ready(function() { 
    $("#ddl").change(function() { 
     var strSelected = ""; 
     $("#ddl option:selected").each(function() { 
      strSelected += $(this)[0].value; 
     }); 
     var url = "/Home/MyAction/" + strSelected; 

     $.post(url, function(data) { 
      // do something if necessary 
     }); 
    }); 
}); 
+0

这是关于如何使用表单和ASP.MVC完成的正确答案。 http://stackoverflow.com/q/10566923/706363 – ppumkin 2013-10-12 14:02:09

+0

[some](http://stackoverflow.com/a/4100182/2218697)使用'$ .ajax({'和你正在使用'$ .post',那么对于ajax Get和Post最合适的区别是什么? – stom 2015-11-11 16:55:13

1

看看这个blog post,它会帮助你更好地掌握Ajax.BeginForm的实际工作方式。我建议回到微软的文档,以确保你对Ajax库有一个很好的掌握,并且它的操作。

+0

我同意y OU。但是你的博客文章链接出现白页? – ppumkin 2013-10-12 14:00:17

2

ViewData不是将数据传回服务器端的地方。表单标签中的html输入控件的值在操作方法中很方便。您可以从各种类型的操作方法参数(模型,表单集合等)中获取这些值。

这里是链接到free asp.net mvc ebook tutorial。是一个很好的asp.net mvc资源。

+2

mvc 1.0? LOLOL – Elisabeth 2012-05-31 18:18:23

+1

@伊丽莎白这是超古老的,但我不禁注意到你的评论:当Ricky发布这个,MVC 2.0只发布了大约2个月,所以这是一个当时的合法链接:-) – joshmcode 2015-10-22 14:27:43

0
在此篇 it is just small chnge

实测值溶液,这是正确的 - 仅改变正在取代:

平变化=“this.form.submit();”

与:

onchange =“$(this.form).submit();”