我正在尝试在下拉列表中自动保存选择(ASP.NET,MVC,VB),但它没有按预期运行。这是控制器中的虚拟动作:
<AcceptVerbs(HttpVerbs.Post)> _
Function TestAction(ByVal id As Integer) As ActionResult
Return Content(id)
End Function
和HTML:
<script type="text/javascript" src='<%= Url.Content("~/Scripts/MicrosoftAjax.debug.js") %>'></script>
<script type="text/javascript" src='<%= Url.Content("~/Scripts/MicrosoftMvcAjax.debug.js") %>'></script>
<% Using Ajax.BeginForm("TestAction", New AjaxOptions With {.UpdateTargetId = "test"})%>
<%=Html.Hidden("id", 123)%>
<%=Html.DropDownList("actions", Nothing, New With {.onchange = "this.form.submit();"})%>
<input type="submit" value="Submit" />
<span id="test"></span>
<% End Using%>
“提交”按钮按预期工作 - 范围填充“123”。另一方面,下拉列表打开一个新页面,上面只有“123”。为什么“this.form.submit()”没有与Submit按钮做同样的事情?我是否应该进行不同的调用以模拟“提交”按钮?
答案 0 :(得分:1)
this.form.submit不运行form.onsubmit事件。另一方面,按提交按钮可以。结合the HTML that Ajax.BeginForm generates,解释了为什么两者表现不同。至于如何使您的事件与按下提交按钮的操作相同,请查看链接文章中的HTML:
Sys.Mvc.AsyncForm.handleSubmit(
this,
new Sys.UI.DomEvent(event),
{
insertionMode: Sys.Mvc.InsertionMode.replace,
updateTargetId: 'test'
});
答案 1 :(得分:0)
我知道这是旧的,但有一种新的(更好的)方法可以做到这一点。
使用jQuery而不是使用javascript。刚刚遇到这个问题并且效果很好。
this.form.submit()
&lt; ---- Javascript
$("form").submit()
&lt; ---- jQuery