我正在使用母版页的 ASP.NET (C#) web 项目。

我正在寻找一种简单的方法来在每次加载页面时显示随机客户报价。

由于这是一个相当简单的网络项目,我不想将引号存储在数据库中。目前该项目不需要数据库连接,所以我想保持它尽可能简单——也许将引号存储在一个 XML 文件中,它们使用 XmlTextReader 读取文件?

任何建议表示赞赏。

谢谢

编辑: 我需要存储和提取报价的报价和客户名称。

最佳答案

使用 LINQ 可能就这么简单:

XElement xml = new XElement("quotes",
    new XElement("quote",
        new XElement("customer", "Customer #1"),
        new XElement("text", "Quote #1")),
    new XElement("quote",
        new XElement("customer", "Customer #2"),
        new XElement("text", "Quote #2")),
    new XElement("quote",
        new XElement("customer", "Customer #3"),
        new XElement("text", "Quote #3")),
    new XElement("quote",
        new XElement("customer", "Customer #4"),
        new XElement("text", "Quote #4")),
    new XElement("quote",
        new XElement("customer", "Customer #5"),
        new XElement("text", "Quote #5"))
);

//XElement xml = XElement.Load("filename"); // use file instead of above
var result = xml.Elements()
                .OrderBy(r => System.Guid.NewGuid())
                .Select(element => new {
                        Customer = element.Element("customer").Value,
                        Quote = element.Element("text").Value
                    })
                .First();

Console.WriteLine("{0} : {1}", result.Customer, result.Quote);

您的文件结构如下:
<quotes>
  <quote>
    <customer>Customer #1</customer>
    <text>Quote #1</text>
  </quote>
  <quote>
    <customer>Customer #2</customer>
    <text>Quote #2</text>
  </quote>
  <quote>
    <customer>Customer #3</customer>
    <text>Quote #3</text>
  </quote>
  <quote>
    <customer>Customer #4</customer>
    <text>Quote #4</text>
  </quote>
  <quote>
    <customer>Customer #5</customer>
    <text>Quote #5</text>
  </quote>
</quotes>

您将使用 XElement xml = XElement.Load("filename"); 加载它

有了上面的 xml 变量,前面的代码也是一样的使用方式(注释掉的代码)。
Guid 有效,但您也可以在类中定义一个静态随机变量:public static Random rand = new Random(); 然后将代码更改为:
int count = xml.Elements().Count();
var randomQuote = xml.Elements()
                     .OrderBy(i => rand.Next(0, count))
                     .Select(element => new {
                        Customer = element.Element("customer").Value,
                        Quote = element.Element("text").Value
                      })
                     .First();

Console.WriteLine("{0} : {1}", result.Customer, result.Quote);

关于c# - 在 asp.net 网页上显示随机报价,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2142589/

10-09 06:07
查看更多