首页 > 解决方案 > Microsoft.CSharp.RuntimeBinder.RuntimeBinderException 当我尝试访问视图中的模型时

问题描述

我在一个典型的地方有问题。当我在 View 中访问 Model 或任何动态变量(通过 ViewBag)时,我得到 Microsoft.CSharp.RuntimeBinder.RuntimeBinderException。

示例视图(View/Assignments/Assignments.cshtml):

@using DocMaster.Models
@model List<IGrouping<string, User>>
...
<ul class="tree">
  @foreach (var dep in Model)
  {
    <li class="close" name='open_close'>
      <span class="org">@dep</span>
      <ul>
        @foreach (var user in dep)
        {
          <li class="li_user" name="resp_add" id="@user.Id">
            <span class="user">@user.Surname @user.Name @user.Patronymic</span>
          </li>
        }
      </ul>
   </li>
  }
</ul>

控制器(控制器/AssignmentController.cs):

public class AssignmentController : Controller
{
    private  PgDb db = new PgDb();

    [HttpGet]
    public ActionResult Assignments(Guid docId)
    {
        var departments = db.Users.OrderBy(x => x.Surname).GroupBy(x => x.Department.Name).ToList();

        return View(departments);
    }
}

堆栈跟踪

Строка 76:                         <div class="dn" id="user_book03">
Строка 77:                             <ul class="tree">
Строка 78:                                 @foreach (var dep in Model)
Строка 79:                                 {
Строка 80:                                     <li class="close" name='open_close'>

Исходный файл: C:\Users\ruslan\source\repos\Documentics\DocMaster\Views\Assignment\Assignments.cshtml    Строка: 78 

Трассировка стека: 


[RuntimeBinderException: Не удается выполнить привязки исполняющей среды по нулевой ссылке]
   CallSite.Target(Closure , CallSite , Object ) +115
   System.Dynamic.UpdateDelegates.UpdateAndExecute1(CallSite site, T0 arg0) +629
   ASP._Page_Views_Assignment_Assignments_cshtml.Execute() in C:\Users\ruslan\source\repos\Documentics\DocMaster\Views\Assignment\Assignments.cshtml:78
   System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +197
   System.Web.Mvc.WebViewPage.ExecutePageHierarchy() +105
   System.Web.WebPages.StartPage.RunPage() +17
   System.Web.WebPages.StartPage.ExecutePageHierarchy() +64

标签: c#asp.netasp.net-mvc-4

解决方案


你确定吗

        var departments = db.Users.OrderBy(x => x.Surname).GroupBy(x => x.Department.Name).ToList();

正在返回一个值,因为错误坚持您在代码中的某处有一个空引用,我假设这是代码给出的地方。调试控制器方法并找出空引用在哪里。


推荐阅读