【问题标题】:i get Error executing child request for handler我收到错误执行处理程序的子请求
【发布时间】:2013-08-15 15:51:27
【问题描述】:

我的登录是部分视图。我将包含 tbl_profile 的 some 字段的模型传递给部分视图并填充它,然后我将填充的模型传递给 [HttpPost] 部分中的 actionresult 和... 但现在我在 [HttpGet] 部分遇到了麻烦。我在这行 cod " *@Html.Action("LogOn","Account")"* 上收到此错误。 我的代码:

     [HttpGet]
    public ActionResult LogOn(string returnUrl)
    {

         using (var db = new MyContext())
        {

           var  AllFeatureToLog = db.tbl_profile.Select(u => new UsersClass.LogOn { username = u.username, password_User = u.password_User }).ToList();

            return PartialView(AllFeatureToLog);
        }
    }

类:

   public class UsersClass
   {
    public class LogOn
    {
        public string username { get; set; }
        public string password_User { get; set; }
    }
   }

LogOn.cshtml:

    @model MyProject.Models.UsersClass.LogOn     
    @using (Html.BeginForm())
     {
     @Html.AntiForgeryToken()
   <form class="signin-form">

     @Html.TextBoxFor(m => m.username, new { @id = "username", @class = "input-block-       level", @placeholder = "* enter username" })
     @Html.TextBoxFor(m => m.password_User, new { @id = "password", @class = "input-block-level", @placeholder = "* enter pass" })
     @Html.ValidationMessage("LoginError")

<label class="checkbox">
    <input type="checkbox">remember me</label>
<button class="btn btn-medium btn-general input-block-level" type="submit">   enter</button>
 </form>
 }

错误:

     Error executing child request for handler 'System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper'

【问题讨论】:

  • 您是否尝试调试以获得遇到的确切错误。您发布的错误是一个高级错误,表明在渲染/执行部分视图时存在一些问题。
  • 我在 [HttpGet] 块上断点。它一步一步地工作。但在“return PartialView(AllFeatureToLog);”行之后它显示错误:传入字典的模型项是“System.String”类型的,但该字典需要“PakalaMaster.Models.CentricModelClasses.zUsersClass+LogOn”类型的模型项。
  • 所以问题是您的控制器操作显然返回了一个视图,其模型设置为 System.String 类型,但视图的模型类型是 PakalaMaster.Models.CentricModelClasses.zUsersClass+LogOn
  • 是的,我知道。但为什么?我在 AllFeatureToLog 中得到一个列表并将其发送到 view 。我很困惑。是否有另一种方法可以发送一些并非所有字段来查看?
  • 如果您尝试return PartialView(new UsersClass.LogOn()); 只是为了看看它是否能解决类型问题?

标签: asp.net-mvc asp.net-mvc-4


【解决方案1】:

改用这个 ::

@{ Html.RenderAction("LogOn","Account"); }

这将解决您的问题。

【讨论】:

  • 我自己使用了 @Html.Action("LogOn","Account") 。但现在我正在使用@Html.RenderAction,它不接受并且显示无法将类型 volid 转换为对象。
  • @niknaz,语法错误,更新了我的答案。看看吧。
  • 我将 RenderAction 更改为 RenderPartial 。现在说:传入字典的模型项的类型为“System.String”,但该字典需要一个“MyProject.Models”类型的模型项。 +登录'。我在 [HttpGet] 中的编码是否错误?
  • @niknaz,那么你的局部视图一定有错误。能贴出它的代码吗?
  • 它是 LogOn.cshtml 。你想要吗?
【解决方案2】:

你发送列表:

var  AllFeatureToLog = db.tbl_profile.Select(u => new UsersClass.LogOn { username = u.username, password_User = u.password_User }).ToList();
return PartialView(AllFeatureToLog);

但是您的视图只期望一个模型:

@model MyProject.Models.UsersClass.LogOn

更改:发送时您的 ActionResult:var AllFeatureToLog = db.tbl_profile.Select(u =&gt; new UsersClass.LogOn { username = u.username, password_User = u.password_User }).Fist();

或查看获取列表:@model IENumerable&lt;MyProject.Models.UsersClass.LogOn&gt;

【讨论】:

  • 没有安德烈,我以前试过但没用。我试过 IENumerable
  • @niknaz 可能还有一个错误,但您的视图只需要一个模型,否则会产生错误。尝试通过路径 /Account/LogOn 直接运行您的 ParttailView(没有 View,它是嵌套的)它必须向您显示某些错误
  • @Andrey.Gubal 你是说.First()吗?
  • 我认为我的代码有问题。当我传递一个包含整个字段的模型时,它可以工作并且我可以看到登录页面。但是当我像上面那样写 [ var AllFeatureToLog = db.tbl_profile.Select(u => ... ] 时,会发生此错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-24
  • 2019-02-10
相关资源
最近更新 更多