C# 使用ASP.NETMVC查询XML文件以提取C中基于日期的值
我想把几年前我在VB.NET中写的一些代码放在右上方更新。现有站点在加载时所做的是评估今天的日期,并将其放在MVC中母版页布局页面的标题上。我知道怎么做 在日期下方,如果今天是圣诞节、圣帕特里克节或全年超过100个特定日期中的任何一个,它可能会显示一条短的日期特定消息。我在VB.NET中使用了一个Select Case,而Case Else包含定义代码,例如,如果没有为特定日期定义任何内容,那么在夏天还有多少天,或者直到圣诞节。我突然想到,在XML文件中读取日期并设置要在页面HTML中使用的变量将更容易管理,而不是在现有表单页面上的代码隐藏文件中编辑它。以下是我到目前为止的情况: XML模式 XML数据文件 我的网页上的代码,将todayMsg插入网页C# 使用ASP.NETMVC查询XML文件以提取C中基于日期的值,c#,xml,asp.net-mvc,asp.net-mvc-4,date,C#,Xml,Asp.net Mvc,Asp.net Mvc 4,Date,我想把几年前我在VB.NET中写的一些代码放在右上方更新。现有站点在加载时所做的是评估今天的日期,并将其放在MVC中母版页布局页面的标题上。我知道怎么做 在日期下方,如果今天是圣诞节、圣帕特里克节或全年超过100个特定日期中的任何一个,它可能会显示一条短的日期特定消息。我在VB.NET中使用了一个Select Case,而Case Else包含定义代码,例如,如果没有为特定日期定义任何内容,那么在夏天还有多少天,或者直到圣诞节。我突然想到,在XML文件中读取日期并设置要在页面HTML中使用的变量
这是我以前从未做过的,我不知道如何在C或VB.NET中做。有谁能帮助我查询XML文件,提取今天日期的消息(如果有),并将其放在CSHTML页面上,或者放在段落中,或者作为ASP.NET标签的文本。我想这不会那么难。为您快速拼凑起来,作为如何做到这一点的工作示例 下面将把XML反序列化为两个对象,这两个对象反映了您的XML布局,然后您可以通过数据循环,将日期与当前日期进行比较,如果匹配,则输出消息。这不是世界上最简单的例子,但它确实给了你一个起点 我强烈建议您了解C的工作原理、OOP、对象、反序列化、属性等,这样您就可以了解它的工作原理 虽然我同意Erik Philips在上面的评论中所说的,但我从这样的例子中学到了更好的东西,所以我认为我应该把一些东西放在一起:
public class KeyDates
{
[XmlElement("DateInfo")]
public List<DateInfo> DateInfo { get; set; }
}
public class DateInfo
{
[XmlElement("todayDate")]
public string todayDate { get; set; }
[XmlElement("todayMsg")]
public string todayMsg { get; set; }
}
class Program
{
static void Main(string[] args)
{
XmlSerializer serializer = new XmlSerializer(typeof(KeyDates));
using (FileStream stream = new FileStream("F:\\Data\\Desktop\\ddd.xml", FileMode.Open))
{
KeyDates keyDates = (KeyDates)serializer.Deserialize(stream);
foreach (DateInfo dateInfo in keyDates.DateInfo)
{
if (DateTime.Now.ToString("yyyy-MM-dd") == dateInfo.todayDate)
{
Console.WriteLine(dateInfo.todayMsg);
}
}
Console.ReadLine();
}
}
}
欢迎来到堆栈溢出。这个问题很可能会被解决。关于堆栈溢出的问题通常包括一个代码示例、您预期会发生什么以及实际发生了什么。如果您根本不知道如何编写c,那么您应该研究internet google和其他堆栈溢出问题作为开始的示例,而不是让其他人来做您的工作;对该项目的支持。我不会这么快完成这项工作。你为什么要结束这次讨论?我在网上读了很多文章,也没有要求你做我的工作。谢谢你教我一种我以前不知道的技术。回答得好@Craig+1,但你可以通过这样做来使用显式转换:KeyDates KeyDates=KeyDatesserializer.Deserializestream;啊,是的,说得好。对我原来的职位所做的调整。
<?xml version="1.0" encoding="utf-8" ?>
<KeyDates>
<DateInfo>
<todayDate>2014-07-29</todayDate>
<todayMsg>First full day of holidays</todayMsg>
</DateInfo>
<DateInfo>
<todayDate>2014-07-30</todayDate>
<todayMsg>Hope it doesn't rain today</todayMsg>
</DateInfo>
<DateInfo>
<todayDate>2014-07-31</todayDate>
<todayMsg>Sorry to see the end of July</todayMsg>
</DateInfo>
...
</KeyDates>
public class KeyDates
{
[XmlElement("DateInfo")]
public List<DateInfo> DateInfo { get; set; }
}
public class DateInfo
{
[XmlElement("todayDate")]
public string todayDate { get; set; }
[XmlElement("todayMsg")]
public string todayMsg { get; set; }
}
class Program
{
static void Main(string[] args)
{
XmlSerializer serializer = new XmlSerializer(typeof(KeyDates));
using (FileStream stream = new FileStream("F:\\Data\\Desktop\\ddd.xml", FileMode.Open))
{
KeyDates keyDates = (KeyDates)serializer.Deserialize(stream);
foreach (DateInfo dateInfo in keyDates.DateInfo)
{
if (DateTime.Now.ToString("yyyy-MM-dd") == dateInfo.todayDate)
{
Console.WriteLine(dateInfo.todayMsg);
}
}
Console.ReadLine();
}
}
}