System.NullReferenceException:“未将对象引用设置到对象的实例。”

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

System.NullReferenceException
HResult=0x80004003
Message=未将对象引用设置到对象的实例。
Source=NewsSystem
StackTrace:

img

id和desc可以传过去

img

img

用代码块功能插入代码,请勿粘贴截图

视图中的代码

<script src="~/layui/layui.js">script>
<script src="~/Js/jquery-3.4.1.min.js">script>
<h2>编辑新闻h2>
<div class="layui-form">
    <input type="hidden" id="id" value="@Model.id" />
    <div class="layui-form-item">
        <label class="layui-form-label">标题label>
        <div class="layui-input-block">
            <input type="text" name="title" id=" title" required lay-verify="required" placeholder="请输入标题" autocomplete="off" class="layui-input" value="@Model.Title" />
        div>
    div>
    <div class="layui-form-item layui-form-text">
        <label class="layui-form-label">内容label>
        <div class="layui-input-block">
            <textarea name="desc" id="desc" placeholder="请输入内容" class="layui-textarea" >@Model.Texttextarea>
        div>
    div>
    <div class="layui-form-item">
        <div class="layui-input-block">
            <button class="layui-btn" lay-submit lay-filter="formDemo" id="btn">立即提交button>
        div>
    div> 
div>
<script>
    $(function () {
        $("#btn").click(function () {
            $.ajax({
                url: '/News/EditNewsAction',
                type: 'post',
                data: {
                    'id': $('#id').val(),
                    'title': $('#title').val(),
                    'desc': $('#desc').val(),
                },
                success: function (msg) {
                    if (msg == '修改成功') {
                        location.href = '/News/Index';
                    }
                    else {
                        layer.open({
                            title: '警告',
                            content: '标题或者内容为空'
                        });
                    }
                },
            })
        })
    })
script>

 public int Update(News t)
        {
            if (t == null) return 0;
            var model = db.News.ToList().FirstOrDefault(item => item.id == t.id);
            if (model == null) return 0;
            model.Title = t.Title;
            model.Text = t.Text;
            int count = db.SaveChanges();
            return count;
        }

实体类

public partial class News
    {
        public int id { get; set; }
        public string Title { get; set; }
        public string Text { get; set; }
        public System.DateTime InsertDate { get; set; }
        public int MemberId { get; set; }
        public string MemberName { get; set; }
    }

数据库的设计

img

运行结果及报错内容

System.NullReferenceException:“未将对象引用设置到对象的实例。”

我想要达到的结果

解决title传值的原因

img

未将对象引用设置到对象的实例
但凡出现这个错误,表示你有对象是null,但你没有做非空判断就直接去调用它内部的属性或方法
很显然title没有传过来
你好好看看前端到底是怎么传值过来的,是不是前后端没有对应

问题分析:
对象为null时,使用对象的属性或方法 导致报错。

问题解决:
使用对象的属性和方法之前,先判断对象是否为空。
代码示例:


string str=null;
if(str!=null){
    var strList=str.Split(',').ToList();
}

【如果还是没解决问题, 建议使用:Try……Catch……Finally捕捉错误,或者直接使用response.write()输出所取的变量值】