您如何从ajax表单内部的下拉列表“onchange”事件中提交?
根据以下问题:How do you submit a dropdownlist in asp.net mvc,从Html.BeginFrom内部可以设置onchange =“this.form.submit”并更改下拉列表。
但是,使用以下代码(在Ajax.BeginFrom内部):
<% using (Ajax.BeginForm("UpdateForm", new AjaxOptions() { UpdateTargetId = "updateText" })) { %>
<h2>Top Authors</h2>
Sort by: <%=Html.DropDownList("sortByList", new SelectList(ViewData["SortOptions"], new { onchange = "this.form.submit()" })%>
<%= Html.TextBox("updateText")%>
<% } %>
回发到 Controller 操作,但是整个页面将替换为“updateText”文本的内容,而不仅仅是“updateText”文本框中的内容。
因此,整个页面将被替换,而不仅仅是替换Ajax.BeginForm内部的区域。
下拉列表调用this.form.submit以便仅在Ajax.BeginForm内部的区域的正确方法是什么?
最佳答案
好的,将近2年后,您可能不再在乎了。谁知道:也许其他人(例如我;-)愿意。
因此,这是(极其简单)的解决方案:
在您的Html.DropDownList(...)
通话中,更改
new { onchange = "this.form.submit()" }
至
new { onchange = "this.form.onsubmit()" }
您看得出来差别吗? ;-)
原因是
Ajax.BeginForm()
使用onsubmit()
处理程序创建了一个表单以异步提交表单。通过调用submit()
,可以绕过此onsubmit()
自定义处理程序。调用onsubmit()
对我有用。关于asp.net-mvc - 如何从Ajax表单中在asp.net mvc中提交下拉列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/367349/