无法使用 AJAX 异步发布最简单的 ASP.NET MVC3 表单



我不明白为什么以下表单执行完整的回发而不是使用 AJAX 异步。 Request.IsAjaxRequest()总是假的。 我想我已经正确遵循了所有示例。 我做错了什么?

这是视图:

@(Layout = null)
<!DOCTYPE html>
<html>
<head>
    <title>Index</title>
    <script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script>
    <script src="../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script>
    <script src="../../Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script>
    <script src="../../Scripts/jquery-1.4.4.js" type="text/javascript"></script>    
</head>
<body>
    <div>
        <div id="update"></div>
        @using(Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "update" }))
        {
            <input type="submit" value="test" />
        }
    </div>
</body>
</html>

这是控制器:

using System.Web.Mvc;
namespace TheHoges.Web.Controllers
{
    public class TestController : Controller
    {
        public ActionResult Index()
        {
            if (Request.IsAjaxRequest())
            {
                // never gets here
                return Content("it worked");
            }
            return View();
        }
    }

}

供参考:

AJAX 和 MVC 3

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

你在web.config中看到这个吗?

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

如果,是的,包括上面的库应该可以解决您的问题。

为了彻底起见,我创建了一个测试页面。作品桃色...

    @{
    ViewBag.Title = "Home Page";
}
@(Layout = null)
<!DOCTYPE html>
<html>
<head>
    <title>Index</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
</head>
<body>
    <div>
            <div id="update">
            </div>    
        @using(Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "update" }))
        {                       
            <input type="submit" value="test" />
        }
    </div>
</body>
</html>

相关内容

最新更新