首页 文章

MVC Ajax.BeginForm InsertionMode

提问于
浏览
2

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 回答

  • 3

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

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

    1)确保在 Headers 中包含帖子

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

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

    而不是返回你好试着返回View()

相关问题