Web配置:
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
JavaScript引用文件:
<script src="@Url.Content("~/Scripts/jquery-1.7.2.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js") type="text/javascript"></script>
CSHTML页面:
@using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "result", LoadingElementId = "progress", InsertionMode = InsertionMode.Replace }))
{
<div class="form">
<div class="emailBox">
<input id="email" name="email">
<input type="submit" value="Join Us">
</div>
<div id="result">
</div>
<div id="progress" style="display:none;">
<img src= "@Url.Content("~/Content/images/Ajax-loader-bar.gif") ">
</div>
</div>
}
Controller.cs:
[HttpPost]
public string Index(SignUpModel model)
{
return "Hello";
}
当我点击“提交”按钮时,整个页面被一个显示为"hello"的白页替换的原因是什么 . 我的印象是Ajax.BeginForm会替换 DIV RESULT 的内容 .
我究竟做错了什么??
另外,LoadingElementID
当AJAX调用返回其值时,它会自动隐藏吗?
=========================
ANSWER
Firebug显示其中一个Referenced JS文件没有找到 .
我修好了..所有工作都按预期工作 .
多谢你们
2 回答
确保在您使用
Ajax.BeginForm
的页面上添加了jquery
,Jquery.unobtrusive-ajax
脚本文件 . 此外,检查firebug(或任何调试工具)是否存在可能导致ajax失败并触发整个页面的完整回发的javascript错误 . 是的,当ajax帖子的结果返回时,loadingelement应该自动隐藏 .还要确保您的web.config包含以下设置
1)确保在 Headers 中包含帖子
2)确保在页面上包含所有引用的JavaScript文件
而不是返回你好试着返回View()