Обновление: я полностью удалил datatype = "html" и надеюсь, что возвращаемое значение всегда будет оценено - но сейчас ничего не происходит.
Я также добавил код, который вызывает функцию openModal. Он находится в пользовательском контроле входа в систему, который содержится в Site.Master. Надеюсь, это прояснит несколько вещей
Похоже, что из контроллера не возвращается объект json обратно в вызывающую программу ajax, что-то где-то потеряно - я никогда не достигаю этой точки останова ... она полностью пропускает
У меня есть простой модал для входа в систему, поэтому я называю LogOn Action следующим образом:
<div id="logonForm">
<% using (Ajax.BeginForm("LogOn", "Account", new AjaxOptions{UpdateTargetId = "logonForm"})) { %>
//my login form
<% } %>
</div>
И Действие выглядит так:
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
//success login
if (Request.IsAjaxRequest())
return Json(new { Url = Url.Action("Index", "Home") }, JsonRequestBehavior.AllowGet);
else
return RedirectToAction("Index", "Home");
}
В этот момент он возвращает новый объект Json с URL-адресом в пользовательский элемент управления (в Site.Master) к javascript здесь:
<script type="text/javascript">
function openModel() {
$.ajax({
type: "get",
url: '/Account/LogOn',
contentType: "application/x-www-form-urlencoded;charset=utf-8",
// async: true,
success: function (result) {
debugger;
if (typeof result == 'string') {
$.modal(result, {
closeHTML: "",
containerId: "login-container",
overlayClose: true
});
}
else if (result.Url) {
debugger;
window.location.href = result.Url;
}
}
});
}
</script>
<% if (Request.IsAuthenticated) { %>
Welcome <b><%: Page.User.Identity.Name %></b>!
<%: Html.ActionLink("Log Out", "LogOff", "Account") %>
<% } else { %>
<a href="javascript:openModel()">Log In</a>
<% } %>
... но javacript никогда не ловит его .. я не вижу что в "результате", экран выводит "{Url: /}" - просто странное поведение
Что мне не хватает? отладчик; break срабатывает, когда я впервые щелкаю ссылку, но когда я пытаюсь отправить форму, она проходит через контроллер LogOn - пытается вернуть объект json, но никогда не возвращается к javascript
Большое спасибо