Asp.net mvc 显示错误值不能为空。使用dhtmlxGantt从ASP.NET MVC的甘特图添加任务时
显示错误值不能为空。使用dhtmlxGantt从ASP.NET MVC的甘特图添加任务时。 mscorlib.dll中发生“System.ArgumentNullException”类型的异常,但未在用户代码中处理。 其他信息:值不能为空 链接: 这是我的密码: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
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")),