Я пытаюсь реализовать AJAX пост в форме. (Новое в ASP.NET MVC, выходя из фона Rails)
Когда я отправить форму и наблюдайте за консолью FireBug, а также с страницей, форма не делает сообщение AJAX. Обработчик AJAX вызывается (Contact/Process) и перенаправляет форму туда, чтобы Contact/Process отображал только ответное сообщение, вместо того, чтобы обновлять обозначенный div в форме
Я должен внедрить что-то не так, какое-то место, скорее всего, в контроллере, который обрабатывает AJAX POST. Не знаю, что еще.
Благодаря
Форма (/Views/Contact/Create.cshtml)
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<div id="content">
<div id="Status"></div>
@using (Ajax.BeginForm("Process","Contact", new AjaxOptions{ HttpMethod = "POST", UpdateTargetId = "Status"}))
{
@Html.ValidationSummary(true)
<p><span class="required">* All fields are required.</span></p>
<!-- First Name -->
<div>
@Html.LabelFor(model => model.Contact.FirstName) <span class="required">*</span>
</div>
@Html.EditorFor(model => model.Contact.FirstName)
@Html.ValidationMessageFor(model =>model.Contact.FirstName)
<div>
<input type="submit" name="submit" value="Submit" class="btn"/>
</div>
}
</div>
Контроллер действия (/Controllers/ContactController.cs)
[HttpPost]
public string Process(ContactViewModel c)
{
if (ModelState.IsValid)
{
c.Contact.DateCreated = DateTime.Now;
db.Contacts.Add(c.Contact);
db.SaveChanges();
return "Success!";
}
return "Failure";
}
Хорошая ловушка на полной библиотеке jquery, а также на ненавязчивой. – krillgar
Вы также можете добавить элемент загрузки в свои параметры ajax, добавив LoadElementId = "loading". :) – hutchonoid
hmm. все еще не работает - мне нужно перехватить кнопку отправки? – Slinky