欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > .net6.0 mvc 传递 model 实体参数(无法对 null 引用执行运行时绑定)

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

2024/11/30 12:29:48 来源:https://blog.csdn.net/djk8888/article/details/144139790  浏览:    关键词:.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();//一个实体Listreturn 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})

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com