MVC Ajax.BeginForm InsertionMode

时间:2012-06-04 05:28:57

标签: asp.net-mvc asp.net-mvc-3 asp.net-ajax

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 个答案:

答案 0 :(得分:3)

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

<appSettings>
        <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
    </appSettings>

答案 1 :(得分:1)

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

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

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

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