代码之家  ›  专栏  ›  技术社区  ›  Wahid Bitar

为什么在将view()返回到ajax表单时总是激发onfailure?

  •  1
  • Wahid Bitar  · 技术社区  · 15 年前

    我正在尝试使用支持Ajax的登录注销。

    我在控制器中做了一些逻辑来登录用户,然后返回包含欢迎消息和注销操作的简单部分链接我的操作方法如下:

    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 回复  |  直到 15 年前
        1
  •  1
  •   Darin Dimitrov    15 年前

    尝试这样:

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

    确保您有一个强类型 LogedInForm.ascx 在与控制器名称相同的视图文件夹中。

    如果这不能修复错误,请尝试使用 FireBug 为了查看操作返回到Ajax请求的确切错误消息。