【发布时间】:2013-08-01 05:46:55
【问题描述】:
我正在编写一个非常简单的 MVC4 测试页面,但不显眼的 Ajax 似乎无法正常工作。当我单击我的提交按钮时,该页面未提交。
我有一个断点是VS,可以看出没有请求。
我使用的是 Firefox,当我单击提交按钮时,Web 控制台显示此 JavaScript 错误:
--- 传递给 getElementById() 的空字符串
发生在第 16 行。
--- jquery.unobtrusive-ajax.js
我设置 ajax 选项如下:
AjaxOptions ajaxOpts = new AjaxOptions { UpdateTargetId = "officeList", Confirm = "Are you sure?", Url = Url.Action("GetOfficeData") };
这是我的 AjaxForm:
@using (Ajax.BeginForm("GetOfficeData", ajaxOpts))
{
<div>
@Html.DropDownList("orgList", new SelectList(Model.Organizations, "ORGID", "ORGNAME"));
<button type="submit" id="btnSubmit">Submit</button>
</div>
}
当我单击提交按钮(在 ajax 选项中定义)时,我确实收到了“您确定提示”。
如果我将 Ajax.BeginForm 更改为:
@using (Html.BeginForm())
...
然后有一个请求,我的断点被命中,并且没有 JS 错误。
我使用 NuGet 来获取 jQuery 和 unobtrusive-ajax 的最新版本。这里是
我来自视图源的脚本标签(所有这些标签 - 按顺序):
<script src="/Scripts/jquery-2.0.3.js"></script>
<script src="/Scripts/DataTables-1.9.4/media/js/jquery.dataTables.js"></script>
<script src="/Scripts/jquery.unobtrusive-ajax.js"></script>
<script src="/Scripts/jquery.validate.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.js"></script>
<script src="/Scripts/modernizr-2.5.3.js"></script>
这是呈现的表单:
<form action="/Selectee/GetOfficeData" data-ajax="true" data-ajax-confirm="Are you sure?" data-ajax-mode="replace" data-ajax-update="#officeList" data-ajax-url="/Selectee/GetOfficeData" id="form0" method="post">
<div>
/*--my drop down .....
<br />
<button type="submit" id="btnSubmit">Submit</button>
</div>
</form>
有什么想法吗?
【问题讨论】:
-
你的 Action 是 HttpPost 吗?
-
不,这不是 HttpPost。在这个阶段这很重要吗?浏览器似乎没有发送请求。
-
你是对的,它甚至还没有到达控制器。
标签: asp.net-mvc-4 ajax.beginform unobtrusive unobtrusive-ajax