基于 Web 请求的项目列表

本文关键字:项目 列表 请求 Web 基于 | 更新日期: 2023-09-27 18:30:52

我想知道根据我从 HttpWebRequest 获得的信息,使用 c# 在 asp.net Web 表单中创建项目列表的最佳方法是什么。在我的Page_Load中,我向返回xml的Wowza媒体服务器发出了Web请求。我将其保存在字符串中,然后使用 xmlreader 获取我需要的数据。完成此操作后,我想在我的 Web 表单的列表中查看它。我希望我足够清楚。

我还希望能够单击将运行函数的项目。

编辑:我一生都无法得到建议的答案来工作,当我运行代码时,网站完全空白。以下是 c# 和 html 文件代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml;
using System.IO;
using System.Net;
public partial class Test : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        List<String> LiveStreamms = new List<String>();
        string xml = "<ArrayOfLiveStream xmlns:i='http://www.w3.org/2001/XMLSchema-instance' xmlns='http://schemas.datacontract.org/2004/07/MvcApplication1.Models'><LiveStream><Name>Test1</Name><Path>Path1</Path></LiveStream></ArrayOfLiveStream>";
        XmlReader reader = XmlReader.Create(new StringReader(xml));
        XmlDocument doc = new XmlDocument();
        doc.Load(reader);
        LiveStreams.Data = doc.OuterXml;
        LiveStreams.XPath = "/LiveStream/Name";
    }
}
<%@ Page Language="C#" CodeFile="Test.aspx.cs" Inherits="Test" runat="server"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
      <asp:XmlDataSource
        id="LiveStreams"
        runat="server"
        XPath="/ArrayOfLiveStream"/>
      <asp:DataList
        id="PeopleDataList"
        DataSourceID="LiveStreams"
        Runat="server">
        <ItemTemplate>
          <table cellpadding="4" cellspacing="4">
            <tr>
              <td style="vertical-align:top; width:120">
                <asp:Label id="PathNameLabel" Text='<%# XPath("Livestream/Path") %>' runat="server" />, 
                <asp:Label id="NameLabel" Text='<%# XPath("Livestream/Name") %>' runat="server" />
              </td>
            </tr>
          </table>
        </ItemTemplate>
      </asp:DataList>
    </form>
  </body>
</html>

基于 Web 请求的项目列表

您可以使用 XmlDataSource 和数据列表来执行此操作 这里有一篇关于如何执行此操作的 msdn 文章基本上,您采用 XML 并在模板中使用 XPath 查询来创建所需的效果。

因为文章可能过时了,所以我包括他们的样本,但这不是我的代码。

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
      <asp:XmlDataSource
        id="PeopleDataSource"
        runat="server"
        XPath="/People/Person"
        DataFile="~/App_Data/people.xml" />
      <asp:DataList
        id="PeopleDataList"
        DataSourceID="PeopleDataSource"
        Runat="server">
        <ItemTemplate>
          <table cellpadding="4" cellspacing="4">
            <tr>
              <td style="vertical-align:top; width:120">
                <asp:Label id="LastNameLabel" Text='<%# XPath("Name/LastName")%>' runat="server" />, 
                <asp:Label id="FirstNameLabel" Text='<%# XPath("Name/FirstName")%>' runat="server" />
              </td>
              <td valign="top">
                 <asp:Label id="StreetLabel" Text='<%# XPath("Address/Street") %>' runat="server" /><br />
                 <asp:Label id="CityLabel" Text='<%# XPath("Address/City") %>' runat="server" />, 
                 <asp:Label id="RegionLabel" Text='<%# XPath("Address/Region") %>' runat="server" />
                 <asp:Label id="ZipCodeLabel" Text='<%# XPath("Address/ZipCode") %>' runat="server" />
              </td>
            </tr>
          </table>
        </ItemTemplate>
      </asp:DataList>
    </form>
  </body>
</html>

如果您注意到 XML 正在加载到数据源中,则在数据列表模板中使用,则每个记录都使用具有限定名称的 XPath 查询。这有点像使用中继器。

另请注意,您不必使用 Xml 文件,您可以使用 XmlDataSource 上的 Data 属性绑定到从字符串创建的 XmlDocument。例如

XmlDocument 方式:

XmlDocument doc = new XmlDocument();
doc.Load(reader);
xmlDataSource.Data = doc.OuterXml;
xmlDataSource.XPath = "/People/Person";

XDocument方式:

XDocument doc = XDocument.Parse(xml);
xmlDataSource.Data = doc.ToString();
xmlDataSource.XPath = "/People/Person";

这。此处记录了 Data 属性,另请注意,如果数据是静态的(在您的情况下不是),您可以使用 <data> 标记来描述您的数据。由您决定哪个最适合您。