美容營銷型網(wǎng)站百度seo服務(wù)方案
說一下情況:
代碼沒問題,能成功從數(shù)據(jù)庫里查到數(shù)據(jù),能將數(shù)據(jù)丟給ViewBag.XXXX, 在View頁面也能獲取到 ViewBag.XXXX的值,但是發(fā)布到線上后報這個錯:
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 無法對 null 引用執(zhí)行運行時綁定
點擊查看大俠的分析(報錯原因類似):https://blog.csdn.net/catshitone/article/details/99718151
就這樣實體直接就沒了!加了 ViewBag.XXXX != null 的判斷都沒用,頁面直接蹦,
無法對 null 引用執(zhí)行運行時綁定,估計是.net6.0的bug,不是我的問題?....? 嗯嗯...
所以我認為 ViewBag.XXXX 和 ViewDate["XXXX"] 這樣傳遞 實體數(shù)據(jù)?不是很靠譜,
傳遞簡單的 int還有string的值的問題還不大,傳遞復(fù)雜實體的話,靠?dynamic 類型去編譯,
估計會找不到他的對應(yīng)的實體類Class .... 導(dǎo)致 實體數(shù)據(jù)不為空,但是找不到實體里的屬性值 ...
還是老老實實的用 View去傳遞實體:
Controler:
public ActionResult TaskEdit(){string TaskID = HttpContext.Request["TaskID"] == null ? "" : HttpContext.Request["TaskID"].ToString();//url參數(shù)PMP_Task Task = taskBLL.GetTask(TaskID);//一個實體數(shù)據(jù),不為空 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 引用執(zhí)行運行時綁定
的錯了
本解決方法參考于:https://www.cnblogs.com/objectnull/p/9240160.html
另外注意Model的M大小寫:https://blog.csdn.net/foren_whb/article/details/80665438
?(聲明類型的時候用小m{@model},調(diào)用的時候用大M{@Model})