weixin_52242572 2021-12-31 12:47 采纳率: 100%
浏览 41
已结题

发表评论时,视图页添加用户信息的代码之后,出现未将对象设置到引用对象实例的错误

问题遇到的现象和发生背景

发表评论时,视图页添加用户信息的代码之后,出现未将对象设置到引用对象实例的错误,点击发表评论后下方的展示评论不会立即刷新添加刚发表的评论,但是数据库中已经插入数据

问题相关代码,请勿粘贴截图

控制器部分

 [HttpPost]
        [ValidateAntiForgeryToken]
        [ValidateInput(false)]
        [IsLogin(IsCheck = false)]
        public ActionResult AddpostpicComment(string postid, string comment)
        {
            if (Session["login"] != null)
            {
                Comment c = new Comment();
                string id;
                Random rnd = new Random();
                int rndNum = rnd.Next(10000000, 99999999);
                id = "M0" + DateTime.Now.ToString("yyyy-MM-dd")+ rndNum.ToString();
            c.plcommentId = id;
            c.plcommentContent = comment;
            c.postId = postid;
            c.commentTime = DateTime.Now;
            c.delTime = null;
            c.Is_Del = false;
            c.userId = ((UserInfo)Session["login"]).userId;
            c.lastCommentid = null;
            db.Comments.Add(c);
            if (db.SaveChanges() > 0)
            {
                var comm = db.Comments.Where(t => t.postId== postid).OrderByDescending(t => t.commentTime);
                return PartialView("PostpicComment", comm);

            }
            else
            {
                return Content("Fault");
            }
            }
            else
            {
                return Content("Login");
            }

发表评论视图主要代码

  <div id="L">
            <div id="pinglun">
                @using (Ajax.BeginForm("AddpostpicComment", "posts", new AjaxOptions
                {

                    HttpMethod = "post",
                    UpdateTargetId = "result",
                    OnSuccess = "Comment"
                }))
                {@Html.AntiForgeryToken()
                @Html.ValidationSummary(true)
                <input type="hidden" name="postId" id="" value="@Model.postId" />
                <textarea name="comment" id="editor"></textarea>
                <script>
                    var editor = CKEDITOR.replace('editor');
                </script>
                <br />
                <input type="submit" value="发表评论" />
            }

            </div>
            <div id="result" style="color:black;">
                @Html.Action("PostpicComment", "posts", new { id = Model.postId })
                @*@{Html.RenderPartial("PostpicComment", ViewBag.Comment as IEnumerable<WebWEI.Models.Comment>);}*@
            </div>
        </div>

展示评论视图

 
@model IEnumerable<WebWEI.Models.Comment>

@{
    Layout = null;
}
<h3>图片帖评论(@Model.Count())</h3>

<div>
    @foreach (var item in Model)
    {
        <hr />
        
            <div id="head">
                <a href="@Url.Action("PersonalCenter","User",new { id = item.userId})">
                    <img src="@item.UserInfo.userHeadPortrait" style="border-radius:50%;">
                </a>
            </div>
            <div>
                <p>@Html.Raw(item.plcommentContent)</p>
            </div>
        
    }
</div>

运行结果及报错内容

img

img

img

我的解答思路和尝试过的方法

删除下面展示用户头像信息的代码就不会报错

 <div id="head">
                <a href="@Url.Action("PersonalCenter","User",new { id = item.userId})">
                    <img src="@item.UserInfo.userHeadPortrait" style="border-radius:50%;">
                </a>
            </div>

我想要达到的结果

显示发评论用户信息,点击发表评论后,ajax有反应,立即刷新展示评论界面

  • 写回答

1条回答 默认 最新

  • CSDN专家-showbo 2021-12-31 14:03
    关注

    说明其中有个一条记录的UserInfo属性为null
    var comm = db.Comments.Where(t => t.postId== postid).OrderByDescending(t => t.commentTime);
    这里只是读取评论的信息,没有看到读取用户信息的代码,是设置了关系级联读取?如果是那么发布评论用户的信息应该被删掉了导致没有读取出用户的信息,但是评论信息存在的导致userinfo为null。

    改下面可以保证代码正常执行,但是头像不会显示

     <div id="head">
                    <a href="@Url.Action("PersonalCenter","User",new { id = item.userId})">
    @if(item.UserInfo!=null){
                        <img src="@item.UserInfo.userHeadPortrait" style="border-radius:50%;">
    }
                    </a>
                </div>
     
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月8日
  • 已采纳回答 12月31日
  • 创建了问题 12月31日

悬赏问题

  • ¥15 7-1 jmu-java-m02-使用二维数组存储多元线性方程组
  • ¥20 Qcustomplot缩小曲线形状问题
  • ¥15 企业资源规划ERP沙盘模拟
  • ¥15 树莓派控制机械臂传输命令报错,显示摄像头不存在
  • ¥15 前端echarts坐标轴问题
  • ¥15 CMFCPropertyPage
  • ¥15 ad5933的I2C
  • ¥15 请问RTX4060的笔记本电脑可以训练yolov5模型吗?
  • ¥15 数学建模求思路及代码
  • ¥50 silvaco GaN HEMT有栅极场板的击穿电压仿真问题