2009-07-15 66 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

相关问题