2009-07-16 32 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的