2

网络配置:

<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>
}

控制器.cs:

    [HttpPost]
    public string Index(SignUpModel model)
    {
        return "Hello";
    }

当我点击提交按钮时,整个页面被一个写着“你好”的白页替换,这是什么原因。我的印象是 Ajax.BeginForm 将替换DIV RESULT的内容。

我究竟做错了什么??

此外,当 AJAX 调用将返回其值时,它会自动隐藏 LoadingElementID
吗?

=========================
答案
Firebug 显示未找到引用的 JS 文件之一。
在我修复之后..一切都按预期工作。

多谢你们

4

2 回答 2

3

确保在您使用的页面上添加了脚本jquery文件。此外,检查 firebug(或任何调试器工具)是否存在可能导致 ajax 失败并触发整个页面的完整回发的 javascript 错误。是的,当 ajax post 的结果返回时,loadingelement 应该自动隐藏。 还要确保您的 web.config 包含以下设置Jquery.unobtrusive-ajaxAjax.BeginForm

<appSettings>
        <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
    </appSettings>
于 2012-06-04T05:43:33.917 回答
1

1) 确保在标题中包含帖子

   @using (Ajax.BeginForm(new AjaxOptions 
{ UpdateTargetId = "result", 
LoadingElementId = "progress", 
InsertionMode = InsertionMode.Replace,   
HttpMethod = "POST"  }))

2) 确保在页面上包含所有引用的 JavaScript 文件

而不是返回 hello 尝试返回 View()

于 2012-06-04T05:43:30.190 回答