我的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 [“selected”]的值,以便我可以将其发送到所需的操作。 任何人都可以建议我怎么做?
谢谢!
答案 0 :(得分: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
});
});
});
答案 1 :(得分:2)
ViewData不是将数据传递回服务器端的地方。表单标记内的html输入控件的值在操作方法中可方便地使用。您可以从各种类型的操作方法参数(模型,formcollection等)中获取这些值。
以下是free asp.net mvc ebook tutorial的链接。是asp.net mvc的好资源。
答案 2 :(得分:0)
是的,这是对的 - 只有改变正在取代:
onchange =“this.form.submit();”
使用:
onchange =“$(this.form).submit();”