简单的MVC4不显眼的ajax无法正常工作

时间:2013-07-31 15:40:44

标签: asp.net-mvc-4 ajax.beginform unobtrusive unobtrusive-ajax

我正在编写一个非常简单的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>  




有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我有它的工作。

我没有Html.BeginForm(),只有Ajax.BeginForm()。这有效吗?

我添加了一个带有Ajax.BeginForm()的Html.BeginForm()以及该表单中的所有控件,它开始工作。

我认为Ajax.BeginForm()取代了Html.BeginForm,但似乎我需要两者。这是对的吗?