Asp.net mvc 显示错误值不能为空。使用dhtmlxGantt从ASP.NET MVC的甘特图添加任务时

Asp.net mvc 显示错误值不能为空。使用dhtmlxGantt从ASP.NET MVC的甘特图添加任务时,asp.net-mvc,Asp.net Mvc,显示错误值不能为空。使用dhtmlxGantt从ASP.NET MVC的甘特图添加任务时。 mscorlib.dll中发生“System.ArgumentNullException”类型的异常,但未在用户代码中处理。 其他信息:值不能为空 链接: 这是我的密码: public static List<GanttRequest> Parse(FormCollection form, string ganttMode) { // save current cult

显示错误值不能为空。使用dhtmlxGantt从ASP.NET MVC的甘特图添加任务时。 mscorlib.dll中发生“System.ArgumentNullException”类型的异常,但未在用户代码中处理。 其他信息:值不能为空

链接:

这是我的密码:

public static List<GanttRequest> Parse(FormCollection form, string ganttMode)
    {
        // save current culture and change it to InvariantCulture for data parsing
        var currentCulture = Thread.CurrentThread.CurrentCulture;
        Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;

        var dataActions = new List<GanttRequest>();
        var prefixes = form["ids"].Split(',');

        foreach (var prefix in prefixes)
        {
            var request = new GanttRequest();

            // lambda expression for form data parsing
            Func<string, string> parse = x => form[String.Format("{0}_{1}", prefix, x)];

            request.Mode = (GanttMode)Enum.Parse(typeof(GanttMode), ganttMode, true);
            request.Action = (GanttAction)Enum.Parse(typeof(GanttAction), parse("!nativeeditor_status"), true);
            request.SourceId = Int64.Parse(parse("id"));

            // parse gantt task
            if (request.Action != GanttAction.Deleted && request.Mode == GanttMode.Tasks)
            {
//--HERE SHOWING ERROR VALUE CANNOT BE NULL--//
                    request.UpdatedTask = new GanttTasks()
                    {
                        GanttTaskId = (request.Action == GanttAction.Updated) ? (int)request.SourceId : 0,
                        Text = parse("text"),
                        StartDate = DateTime.Parse(parse("start_date")),
                        Duration = Int32.Parse(parse("duration")),
                        Progress = Decimal.Parse(parse("progress")),
                        ParentId = (parse("parent") != "0") ? Int32.Parse(parse("parent")) : (int?)null,
                        SortOrder = (parse("order") != null) ? Int32.Parse(parse("order")) : 0,
                        Type = parse("type")
                    };
            }
            // parse gantt link
            else if (request.Action != GanttAction.Deleted && request.Mode == GanttMode.Links)
            {
                request.UpdatedLink = new GanttLinks()
                {
                    GanttLinkId = (request.Action == GanttAction.Updated) ? (int)request.SourceId : 0,
                    SourceTaskId = Int32.Parse(parse("source")),
                    TargetTaskId = Int32.Parse(parse("target")),
                    Type = parse("type")
                };
            }

            dataActions.Add(request);
        }

        // return current culture back
        Thread.CurrentThread.CurrentCulture = currentCulture;

        return dataActions;
    }
}
publicstaticlist解析(FormCollection表单,stringganttmode)
{
//保存当前区域性并将其更改为不变量区域性以进行数据解析
var currentCulture=Thread.CurrentThread.currentCulture;
Thread.CurrentThread.CurrentCulture=CultureInfo.InvariantCulture;
var dataActions=新列表();
变量前缀=形式[“ID”]。拆分(',');
foreach(前缀中的var前缀)
{
var请求=新甘特图任务();
//用于表单数据解析的lambda表达式
Func parse=x=>form[String.Format(“{0}{1}”,前缀,x)];
request.Mode=(GanttMode)Enum.Parse(typeof(GanttMode),GanttMode,true);
request.Action=(GanttAction)Enum.Parse(typeof(GanttAction),Parse(!nativeeditor_status),true);
request.SourceId=Int64.Parse(Parse(“id”);
//解析甘特图任务
if(request.Action!=GanttAction.Deleted&&request.Mode==GanttMode.Tasks)
{
//--此处显示的错误值不能为空--//
request.updateTask=new ganttasks()
{
GantTaskid=(request.Action==GanttAction.Updated)?(int)request.SourceId:0,
Text=解析(“文本”),
StartDate=DateTime.Parse(解析(“开始日期”),
Duration=Int32.Parse(解析(“Duration”),
Progress=Decimal.Parse(解析(“Progress”),
ParentId=(parse(“parent”)!=“0”)?Int32.parse(parse(“parent”):(int?)null,
SortOrder=(解析(“顺序”)!=null)?Int32.parse(解析(“顺序”):0,
类型=解析(“类型”)
};
}
//解析甘特图链接
else if(request.Action!=GanttAction.Deleted&&request.Mode==GanttMode.Links)
{
request.UpdatedLink=new GanttLinks()
{
GantLinkId=(request.Action==GanttAction.Updated)?(int)request.SourceId:0,
SourceTaskId=Int32.Parse(解析(“源”)),
TargetTaskId=Int32.Parse(解析(“目标”),
类型=解析(“类型”)
};
}
添加(请求);
}
//返回当前区域性
Thread.CurrentThread.CurrentCulture=CurrentCulture;
返回数据操作;
}
}

我参考了上面提供的链接,并按照说明进行了操作。但在添加值时,其显示值不能为null。

尝试在客户端为task.progress设置默认值

JS:

客户端没有为新创建的任务的progress属性设置默认值,因此在后端插入任务时,progress值为null。 由于后端代码不验证该值,可能会在以下行触发错误:

Progress = Decimal.Parse(parse("progress")),
如上所示,在客户机上设置默认值,或者在服务器上检查null,都可以解决这个问题

Progress = Decimal.Parse(parse("progress")),