Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字符串未被识别为有效的DateTime C.net MVC_C#_Asp.net_Xml_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# 字符串未被识别为有效的DateTime C.net MVC

C# 字符串未被识别为有效的DateTime C.net MVC,c#,asp.net,xml,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Xml,Asp.net Mvc,Asp.net Mvc 4,我正在使用MVC,无法找到解决此错误的方法 这是我的模型 记分卡 以及我的ScorecardRepository.cs中的构造函数 //CONSTRUCTOR public ScorecardRepository() { allScorecards = new List<Scorecard>(); scorecardData = XDocument.Load(HttpContext.Current.Server.Map

我正在使用MVC,无法找到解决此错误的方法

这是我的模型

记分卡

以及我的ScorecardRepository.cs中的构造函数

        //CONSTRUCTOR
    public ScorecardRepository()
    {
        allScorecards = new List<Scorecard>();

        scorecardData = XDocument.Load(HttpContext.Current.Server.MapPath("~/App_Data/ScorecardXML.xml"));
        var scorecards = from scorecard in scorecardData.Descendants("item")
                         select new Scorecard((int)scorecard.Element("ScorecardID"), (int)scorecard.Element("VendorID"),
                             scorecard.Element("Title").Value, (bool)scorecard.Element("Enabled"),
                             (DateTime)scorecard.Element("Created"), (int)scorecard.Element("CreatedBy"),
                             (DateTime)scorecard.Element("LastUpdated"), (int)scorecard.Element("UpdatedBy"));
        allScorecards.AddRange(scorecards.ToList<Scorecard>());
    }
所以除了我得到的一个日期时间错误之外,一切都正常工作,这让我很困惑,为什么它一直在发生

错误


非常感谢所有帮助

从XDocument读取数据时,您需要解析日期而不是强制转换:

DateTime.Parse(scorecard.Element("Created"))
试一试怎么样:

Convert.ToDateTime(scorecard.Element("Created").Value)
在显式转换为DateTime之前,是否需要显式转换为XElement?i、 e:

DateTimeXElementscorecard.element已创建


您的强制转换应该使用有效的字符串,但是,在看到XML之后,其中的一些值无法解析为日期。如果数据并非总是有效的,则转换时需要检查格式异常。

您不应该信任输入。在将任何内容转换为除字符串以外的任何其他类型之前,请使用TryParse。您应该检查null值,尤其是可为null的类型。如果它仍然抛出异常,您可以更好地管理它们。

尝试以下方法:

DateTimeConvert.ToDateTimescorecard.ElementCreated.Value

公共记分卡存储库 {


}

XML文件中的日期格式是什么?XML文件到目前为止1有什么是真实的1 123 1 123我可以问一下;您认为如何正确地将1转换为datetime?尝试过了!它向我提供了以下信息[错误1与'System.DateTime.Parsestring'匹配的最佳重载方法具有一些无效参数C:\solutions\Web\VisualStudio2010\VendorScorecard\VendorScorecard-Good01062014\VendorScorecard\Models\ScorecardRepository.cs 24 34 VendorScorecard]和[错误2参数1:无法从'System.Xml.Linq.XElement'转换为'string'C:\solutions\Web\VisualStudio2010\VendorScorecard\VendorScorecard-Good01062014\VendorScorecard\Models\ScorecardRepository.cs 24 49 VendorScorecard],该参数允许生成,但会抛出此错误[System.InvalidCastException:无法将类型为'System.Xml.Linq.XElement'的对象强制转换为类型为'System.IConvertible'你能这样做吗?我手头没有代码来测试这个,但我认为它应该能工作…Convert.ToDateTimescorecard.ElementCreated.ToString可能就和添加.Value一样简单?我已经编辑了上面的答案。我不确定它是在寻找Value还是ToString,但我猜这两个选项中的一个会起作用。另外,不管它值多少,Convert也会起作用函数也应该用于int值…我在一些CRM 2011 linq查询中直接使用它,结果适得其反。仍然说..字符串未被识别为有效的DateTime。有问题的字符串的值是什么?当我简单地尝试加载视图时会发生这种情况异常消息表明您的scorecard Repository类是在您这样做时创建的,而您的XML中的某些内容是导致异常的原因。您不能发布XML或至少一个XML示例吗?scorecard.element已创建XElement,为什么要再次强制转换?完全不必要
Convert.ToDateTime(scorecard.Element("Created").Value)