基于 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>
您可以使用 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>
标记来描述您的数据。由您决定哪个最适合您。