Ajax.BeginForm不会调用onSuccess

Chu*_*ris 5 asp.net-mvc jquery asp.net-ajax asp.net-mvc-3

在ASP.NET MVC 3应用程序中,我使用Ajax.BeginForm将写入的文本发布到控制器.

@using (Ajax.BeginForm("Post", "Forum", new {threadId = Model.Thread.Id  }, new AjaxOptions { OnSuccess = "PostReply" }))
{
    <div id="reply-area">
        <h3 style="border-bottom:1px solid black">POST REPLY</h3>

        <span id="post-error" class="error-message"></span>
        <textarea rows="1" cols="1" id="post-textarea" name="Content">    </textarea>

         <input type="submit" class="button" value="Submit"/>

     </div>
}
Run Code Online (Sandbox Code Playgroud)

在控制器中我有

 [HttpPost]
 public ActionResult Post(int threadId,PostModel model)
 {
     bool Success = false;
     if (ModelState.IsValid)
     {
        Success=Unit.ForumFacade.CreatePost(Unit.ForumFacade.GetThreadByID(threadId), model.Content,  CurrentUserId);
        if (Success == true) return View("PostSuccess");
    }

    return Json("fsdfds");
}
Run Code Online (Sandbox Code Playgroud)

在javascript中我有这个

function PostReply(isRequestSuccessed) {
    alert("asdasd");
    if (isRequestSuccessed==false) {
        $("#post-error").html("Please Try Again");
    }
    else
    {
        $("#post-error").html("");
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是Javascript的功能没有触发而且没有警报,我的浏览器(Firefox)返回弹出窗口以下载application/json文件.这有什么不对?

Dar*_*rov 20

确保您已将以下脚本包含在您的页面中:

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

并且您已在web.config中启用了不显眼的javascript:

<add key="UnobtrusiveJavaScriptEnabled" value="true" />
Run Code Online (Sandbox Code Playgroud)

这就是Ajax.*帮助者Ajax.BeginForm工作的原因.