2009-07-16 50 views
0

我想在下拉列表中自动保存选择(ASP.NET,MVC,VB),但它不像预期的那样工作。下面是在控制器诱敌动作:AJAX对提交按钮的行为有所不同this.form.submit?

<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按钮做同样的事情?我应该做什么来模仿提交按钮吗?

回答

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' 
     }); 
0

我知道这是旧的,但有一个新的(更好)的方式来做这个。

而不是使用JavaScript,使用jQuery。刚刚有这个问题,它运作良好。

this.form.submit() < ----的Javascript

$("form").submit() < ---- jQuery的