Почему всегда срабатывает OnFailure при возврате View () в Ajax Form? - PullRequest
1 голос
/ 15 мая 2010

Я пытаюсь выйти из системы с поддержкой Ajax.

Я сделал некоторую логику в своем контроллере, чтобы войти в систему, а затем вернуть простое частичное, содержащее приветственное сообщение и выход из системы. ActionLink мой метод Action выглядит так:

public ActionResult LogOn(LogOnModel model, string returnUrl)
{
    if (ModelState.IsValid)
    {
        if (MembershipService.ValidateUser(model.UserName, model.Password))
        {
            FormsService.SignIn(model.UserName, model.RememberMe);
            if (Request.IsAjaxRequest())
            {
             //HERE IS THE PROBLEM :(
                return View("LogedInForm", model);
            }
            else
            {
                if (!String.IsNullOrEmpty(returnUrl))
                    return Redirect(returnUrl);
                else
                    return RedirectToAction("Index", "Home");
            }
        }
        else
        {
            ModelState.AddModelError("", "The user name or password provided is incorrect.");
            if (Request.IsAjaxRequest())
            {
                return Content("There were an error !");
            }
        }
    }
    return View(model);
}

и я пытаюсь вернуть этот простой фрагмент:

 Welcome <b><%= Html.Encode(Model.UserName)%></b>!
 <%= Html.ActionLink("Log Off", "LogOff", "Account") %>

и, конечно, два частичных строго типизированы в LogOnModel.

Но если я вернусь View("PartialName"), я всегда получу OnFailure с кодом состояния 500. Хотя, если я вернусь Content("My Message") все идет хорошо.

поэтому, пожалуйста, скажите мне, почему я всегда получаю этот "StatusCode = 500" ??. где большая ошибка ??.

1 Ответ

1 голос
/ 15 мая 2010

Попробуй так:

if (Request.IsAjaxRequest())
{
    return PartialView("LogedInForm", model);
}

Убедитесь, что у вас строго введен LogedInForm.ascx в той же папке просмотра, что и имя контроллера.

Если это не исправляет ошибку, попробуйте использовать FireBug , чтобы увидеть точное сообщение об ошибке, которое действие возвращает в запрос AJAX.

...