当前位置: 首页 > article >正文

.net6.0 mvc 传递 model 实体参数(无法对 null 引用执行运行时绑定)

说一下情况:

代码没问题,能成功从数据库里查到数据,能将数据丢给ViewBag.XXXX, 在View页面也能获取到 ViewBag.XXXX的值,但是发布到线上后报这个错:

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 无法对 null 引用执行运行时绑定

点击查看大侠的分析(报错原因类似):https://blog.csdn.net/catshitone/article/details/99718151


就这样实体直接就没了!加了 ViewBag.XXXX != null 的判断都没用,页面直接蹦,

无法对 null 引用执行运行时绑定,估计是.net6.0的bug,不是我的问题 ....  嗯嗯...

所以我认为 ViewBag.XXXX 和 ViewDate["XXXX"] 这样传递 实体数据 不是很靠谱,

传递简单的 int还有string的值的问题还不大,传递复杂实体的话,靠 dynamic 类型去编译,

估计会找不到他的对应的实体类Class .... 导致 实体数据不为空,但是找不到实体里的属性值 ...


还是老老实实的用 View去传递实体:

Controler:

        public ActionResult TaskEdit()
        {
            string TaskID = HttpContext.Request["TaskID"] == null ? "" : HttpContext.Request["TaskID"].ToString();//url参数
            PMP_Task Task = taskBLL.GetTask(TaskID);//一个实体数据,不为空     
            ViewBag.RoleUsers = roleBLL.GetRoleUsers();//一个实体List

            return View(Task);//传递实体值
        }

View:

@model XrErp.Model.PMP_Task   //指定传递来的实体值的类型
@using XrErp.Model
@{
    Layout = null;
}

<html>
<body>

<!-------直接用:Model 作为实体值来用 ----------->

<select id="TeamMember" class="my-css" multiple="multiple">
    @{
        if (ViewBag.RoleUsers != null && ViewBag.RoleUsers.Count > 0)
        {
            for (int i = 0; i < ViewBag.RoleUsers.Count; i++)
            {
                if (Model != null && Model.TeamMember.Contains(ViewBag.RoleUsers[i].Username))
                {
                    <option value="@ViewBag.RoleUsers[i].UserID" selected>@ViewBag.RoleUsers[i].Username</option>
                }
                else
                {
                    <option value="@ViewBag.RoleUsers[i].UserID">@ViewBag.RoleUsers[i].Username</option>
                }
            }
        }
    }
</select>

<input type="number" id="ManHour" placeholder="0.0" value="@Model.ManHour"  />

<input type="date" id="TaskStartDate" value="@Model.TaskStartDate.ToString("yyyy-MM-dd")"/>


</body>
</html>

这样就不会报:

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 无法对 null 引用执行运行时绑定

的错了


本解决方法参考于:https://www.cnblogs.com/objectnull/p/9240160.html

另外注意Model的M大小写:https://blog.csdn.net/foren_whb/article/details/80665438

 (声明类型的时候用小m{@model},调用的时候用大M{@Model})


http://www.kler.cn/a/415461.html

相关文章:

  • 《Vue 组件化开发:构建可复用的模块》
  • “移门缓冲支架:为家庭安全加码”
  • MySQL5.6升级MySQL5.7
  • 【动态规划入门】【1.2打家劫舍问题】【从记忆化搜索到递推】【灵神题单】【刷题笔记】
  • 【Git】Git 完全指南:从入门到精通
  • 挂载本地目录到k8s的pod实现持久化存储
  • Python 3 教程第36篇(XML 解析)
  • 小程序 - 婚礼邀请函
  • 微信小程序Webview与H5通信
  • Vision Transformer(vit)的主干
  • CSS学习记录02
  • AI开发:逻辑回归 - 实战演练- 垃圾邮件的识别(一)
  • SpringMVC跨域问题解决方案
  • BUUCTF—Reverse—GXYCTF2019-luck_guy(9)
  • 003 MATLAB基础计算
  • Cesium 当前位置矩阵的获取
  • 深入探索 Java 中的 Spring 框架
  • ORACLE之DBA常用数据库查询
  • openGauss你计算的表大小,有包含toast表么?
  • ArcGIS pro中的回归分析浅析(加更)关于广义线性回归工具的补充内容
  • 2.安装docker、docker compose
  • 使用Native AOT发布C# dll 提供给C++调用
  • c++趣味编程玩转物联网:树莓派Pico控制 LED点阵屏
  • 11.25.2024刷华为OD
  • 【动态规划】完全背包问题应用
  • 淘宝Vision Pro:革新购物体验的沉浸式未来