模型类的属性不能设置为null

时间:2018-03-23 14:28:14

标签: c# .net asp.net-mvc linq linq-to-sql

我的申请基本上只是一个有问题和多选答案的调查。并非所有问题都是针对每个人提出的,而是仅当一个人选择对先前问题的某个答案时。即他们在问题15上选择C,然后需要询问问题15.5,否则问题16。我只是添加了这个分支,所以其他一切都在工作。

我在“问题”类中添加了一个int属性“DependentAnswer”来保存答案的ID,这会导致询问给定的问题。一个答案可能会导致多个问题,但反之则不然。

当我向“答案”类添加一个属性“DependentQuestions”,这是一个int列表意味着保存任何问题的ID,如果选择给定的答案应该被问到,我得到这个错误:'DependentAnswer ''问题'上的'属性'无法设置为'null'值。您必须将此属性设置为类型为“System.Int32”的非null值。

以下是我的问题类的重要内容:

hotkeys.prototype._selectAll = function(data) {
    var i,node;
    var nodes = s.graph.nodes();
    var selected = [];
     for (i=0; i<nodes.length; i++){
        node = nodes[i];
        selected.push(node);
    }
    document.nodeSelector.select(selected);
}

hotkeys.prototype.selectAll = function(data) {
    var tag = event.target.tagName.toLowerCase();
    if (event.keyCode == 65 && tag != 'input' && tag != 'textarea' && this.ctrl && !this.shift) { // Ctrl + A
        this._selectAll();
    }
}

这是我的答案课。我创建了一个构造函数,我打算填充DependentQuestions列表,但是我得到一个错误,它似乎与LINQ有关,并且DependentAnswer在任何不依赖于a的问题中都为null,但是我我没有足够的经验知道什么是错的。

public class Question
{
    [Key]
    public int id { get; set; }

    public string question { get; set; }

    public int DependentAnswer { get; set; }
}

2 个答案:

答案 0 :(得分:1)

尝试使DependentAnswer属性可以为空

public int? DependentAnswer { get; set; }

答案 1 :(得分:1)

首先在构造函数中初始化列表,以便它不会触发错误:

 public Answer()
    {
        DependentQuestions = new List<int>();
        //Your additional logic here
    }

然后,如果在使用Question类时使用null int,则将其设为可为空:

public int? DependentAnswer { get; set; }