Не удается получить простейшую форму ASP.NET MVC3 для асинхронной публикации с использованием AJAX - PullRequest
2 голосов
/ 24 мая 2011

Я не понимаю, почему следующая форма выполняет полную обратную передачу вместо асинхронного использования 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();
        }
    }

}

1 Ответ

2 голосов
/ 24 мая 2011

Для справки:

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...