在asp.net网页上显示随机报价

时间:2010-01-26 20:59:15

标签: c# asp.net

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

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

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

感谢任何建议。

由于

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

3 个答案:

答案 0 :(得分:4)

如果你想要简单:将它存储为纯文本文件,每个引号用换行符分隔,使用File.ReadAllText()读入整个文件,拆分换行符以制作数组,并选择随机索引那个数组为你的报价。

示例文件:

  

引用1等等等等等等   引用2 lorem ipsum dolor ...

示例代码:

string[] quotes = File.ReadAllText("path/to/quotes.txt")
          .Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
string randomQuote = quotes[new Random().Next(0, quotes.Length)];

答案 1 :(得分:4)

使用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); 

答案 2 :(得分:3)

我相信你回答了自己的问题。您可以将引号存储在xml文件中,然后将它们添加到数组中,并一次从数组中显示一个值...