2009-07-15 68 views
2

我不確定以下設置有什麼問題。我有一個視圖列出了一些記錄,每個記錄都有一個與其關聯的下拉列表來更改該記錄上的值。我已經在沒有AJAX的情況下工作,但是您必須更改一堆下拉列表,然後單擊Submit按鈕。我想改變它,以便立即保存下拉選擇。ASP.NET MVC AJAX簡單調用返回新頁面

我的精簡視圖(IEnumerable類型(中MyTable的)的):

<script src="../../Scripts/MicrosoftAjax.debug.js" type="text/javascript"></script> 
<script src="../../Scripts/MicrosoftMvcAjax.debug.js" type="text/javascript"></script> 

<% For Each item In Model%> 
<% Using Ajax.BeginForm("Update", New AjaxOptions With {.UpdateTargetId = "test"})%> 
<%=Html.Hidden("id", item.id)%> 
<%=item.name%>: 
<%=Html.DropDownList("ActionCode", New SelectList(ViewData("actions"), "Value", "Text", item.ActionCode), New With {.onchange = "this.form.submit();"})%> 
<span id="test"></span> 
<br/> 
<% End Using%> 
<% Next%> 

我的更新控制器:

<AcceptVerbs(HttpVerbs.Post)> _ 
Function Update(ByVal id As Integer, ByVal ActionCode As String) As ActionResult 
    'Update would happen here 
    Return Content(id & ": " & ActionCode) 
End Function 

我想發生這樣的是下拉變化觸發更新控制器,但可能不會返回任何內容 - 只需更新數據庫並讓用戶繼續前進即可。但是,發生的情況是顯示一個空白頁面,其上顯示了內容值(即「123:ABC」)。這是正確的ID /代碼組合,所以更新似乎是正確的,它只是選擇消滅HTML。

很明顯,我不知道爲什麼AJAX無法正常工作,但這種模式似乎與我能找到的例子相匹配,所以我不確定我要去哪裏出錯。任何幫助將不勝感激。

回答

2

你可能嵌套窗體標籤?

我發現,在這種情況下,點擊提交按鈕實際上觸發了外部形式出現的表單提交,而不是內層一個像你所期望的:

<form id="outer"> 
    <form id="inner"> 
    <input type="submit" value="submit" /> 
    </form> 
</form> 

我也建議使用工具,比如Firefox的Firebug插件。它可以幫助您查看ajax活動和響應。

+0

不,沒有嵌套窗體標籤。儘管我會嘗試Firebug的。謝謝。 – gfrizzle 2009-09-08 14:51:57

相關問題