【问题标题】:ASP.NET MVC AJAX returning new page on simple callASP.NET MVC AJAX 在简单调用时返回新页面
【发布时间】:2010-11-11 00:20:39
【问题描述】:

我不确定以下设置有什么问题。我有一个列出许多记录的视图,每个记录都有一个与之关联的下拉列表来更改该记录上的值。我在没有 AJAX 的情况下一切正常,但是您必须更改一堆下拉菜单,然后单击提交按钮。我想更改它,以便立即保存下拉选项。

我的精简视图(IEnumerable(Of 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

我希望下拉更改触发更新控制器,但可能不会返回任何内容 - 只需更新数据库并让用户继续前进。发生的事情是显示一个空白页面,上面有 Content 值(即“123:ABC”)。这是正确的 id/code 组合,因此更新似乎正确触发,它只是选择清除 html。

显然,我无法正确返回 AJAX 以正常工作,但这种模式似乎与我能找到的示例相匹配,所以我不确定我哪里出错了。任何帮助将不胜感激。

【问题讨论】:

    标签: asp.net vb.net ajax asp.net-ajax


    【解决方案1】:

    你可能会嵌套表单标签吗?

    我发现在这种情况下,单击提交按钮实际上会触发表单提交发生在外部表单中,而不是像您期望的内部表单:

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

    我还建议使用像 Firefox 的 Firebug 插件这样的工具。它可以帮助您查看 ajax 活动和响应。

    【讨论】:

    • 不,没有嵌套的表单标签。不过,我将尝试使用 Firebug。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-24
    • 1970-01-01
    • 2014-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多