我的问题类似于this one,我遇到了类似的问题,但一个很大的区别是我使用的是Ajax辅助方法(Ajax.ActionLink
和Ajax.BeginForm
)而不是用jQuery处理AJAX。
Request.IsAjaxRequest()
对于接受http GET的Edit方法返回true,但对于接受http POST的Edit方法返回false。
GET请求来自:
生成的链接<%=Ajax.ActionLink(item.Name, "Edit", "Device",
new { id = item.ID },
new AjaxOptions { HttpMethod= "GET", UpdateTargetId = "ModalDialog" },
new { name = item.Name })%>
POST请求来自此代码生成的表单:
<% using (Ajax.BeginForm("Edit", "Device", new { id = Model.ID }, new AjaxOptions { OnComplete = "CloseDialog" }))
{ %>
<fieldset>
<h4>
<label for="Name">Name</label>
</h4>
<%= Html.TextBox("Name", null, new { @class = "required" })%>
<h4>
<input type="checkbox" id="IsActive" name="IsActive" <% if (Model.IsActive)%> <%=Html.Encode("checked=''")%> />
<label for="IsActive">Unit Is Active</label>
</h4>
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
<% } %>
这是设计,我做错了什么,我该如何解决这个问题?
答案 0 :(得分:2)
那里的一切看起来都很好。一想法:在AjaxOptions
中为OnComplete
指定了一个“CloseDialog”函数。是否已创建并可访问表单?如果没有,MvcAjax脚本将抛出错误,表单将恢复为常规回发。
答案 1 :(得分:0)
听到这个消息我很惊讶。您可以为Firefox安装Firebug插件,并从NET选项卡监控网络流量。只有aSync请求才会显示在XHR子选项卡中。