mylogin页面是一个部分视图。 我使用 @html.Action(“LogOn”)
但它不能在我的登录操作中重定向到“mainIndex”。 并说:
error executing child request for handler 'system.Web.HttpHandlerUtil+serverExecuteHttphandlerAsynWrapper
我将 @ html.Action(“LogOn”)更改为 @ {html.RenderAction(“LogOn”)} ,但没有不同。 并更改为 @ {Html.partialView(“LogOn”)} ,但错误:
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 :(得分: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()
动作,但没有参数。因为它被称为子动作,所以你会得到这个非常详细的错误。
答案 1 :(得分:0)
如果有人来到这里(像我一样)在将修改后的源代码发布到部署服务器时寻找nopCommerce 3.10中上述错误的解决方案,我的问题是由于缺少插件引起的(我通过检查发现了这一点数据库中的日志表。
这是因为实际上有2个构建脚本用于准备和部署代码(prepare.bat和deploy.bat),在发布源代码时必须运行这些代码来构建源代码 - 这些构建了Nop。 Web和Nop.Administration Web应用程序单独并将相关文件/插件复制到相关位置。它创建了一个可部署的diretory,您可以将其复制到部署服务器。
希望这有助于某人。