2013-08-18 49 views
0

mylogin页面是partialview。我使用@ html.Action(“LogOn”)错误执行处理程序的子请求'system.Web.HttpHandlerUtil + serverExecuteHttphandlerAsynWrapper

但它不能在我的登录动作,重定向到“mainIndex”。 并说:

 error executing child request for handler 'system.Web.HttpHandlerUtil+serverExecuteHttphandlerAsynWrapper 

我改变@ html.Action( “登录”)@ {html.RenderAction( “登录”)},但没有指出错误。 和改变为@ {Html.partialView( “登录”)}但错误:

The model item passed into the dictionary is of type 'System.String', but this dictionary requires a model item of type 'MyProject.Models.UsersClass+LogOn'. 

我的代码:

 [HttpGet] 
     public ActionResult LogOn(String returnUrl) 
     { 

     using (var db = new pakalaContext()) 
     { 
      UsersClass.LogOn AllFeatureToLog = new UsersClass.LogOn(); 

      if (User.Identity.IsAuthenticated) //remember me 
      { 
       MyClass obj = new MyClass(); 
       if (obj.shouldRedirect(returnUrl)) 
       { 
        return Redirect(returnUrl); 
       } 
       return Redirect(FormsAuthentication.DefaultUrl); 
      } 

      return PartialView(AllFeatureToLog); 
     } 
    } 



    public MyProject.Models.AccountModels.ControlUsers MembershipService { get; set; } 

    [HttpPost] 
    public ActionResult LogOn(UsersClass.LogOn loginInfo, string returnUrl) 
    { 


     if (this.ModelState.IsValid) 
     { 

      if (MembershipService.ValidateUser(loginInfo.usernam, loginInfo.password)) 
       { 
       FormsAuthentication.SetAuthCookie(loginInfo.usernam, loginInfo.RememberMe); 
       MyClass obj1 = new MyClass(); 
       if (obj1.shouldRedirect(returnUrl)) 
       { 
        return Redirect(returnUrl); 
       } 
       else 
       { 
        return RedirectToAction("MainIndex", "Home"); 
       } 
           } 

      else 
      { 
       this.ModelState.AddModelError("LoginError", "incorrec pass or username"); 

      } 
     } 



     return PartialView(loginInfo); 
    } 

回答

0

这个问题似乎是该LogOn()操作需要2个参数。你不能简单地调用@{ RenderAction("LogOn"); },你要添加的参数,如:

@{ 
    var loginInfo = new UsersClass.LogOn() { /* Stuff */ }; 
    var url = Request.Url.ToString(); 
    Html.RenderAction("LogOn", new { loginInfo = loginInfo, returnUrl = url }); 
} 

所以问题是,框架是寻找一个LogOn()动作不带任何参数,却没有一个。因为它被称为子动作,所以你会得到这个非常详细的错误。

0

如果有人来到这里(像我一样)在发布修改后的源代码到部署服务器时寻找nopCommerce 3.10中的上述错误的解决方案,我的问题是由于缺少插件引起的(我通过检查DB中的日志表)。

这是由于实际上有2个构建脚本用于准备和部署代码(prepare.bat和deploy.bat),在发布源代码时必须运行它们来构建源代码 - 这些构建Nop .Web和Nop.分别管理web应用程序,并将相关文件/插件复制到相关位置。它会创建一个可部署的目录,您可以将其复制到部署服务器。

希望这可以帮助别人。

相关问题