Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.NET中发送回发和读取内容_C#_Asp.net_Post_Postback - Fatal编程技术网

C# 在ASP.NET中发送回发和读取内容

C# 在ASP.NET中发送回发和读取内容,c#,asp.net,post,postback,C#,Asp.net,Post,Postback,我有一个非常简单的网站(),它包含一个页面,该页面生成随机日期时间值并将其写入标签,该页面的代码是: <form id="form1" runat="server"> <div> <asp:Label ID="lblGeneratedDateTime" runat="server"></asp:Label> <br /> <asp:DropDownList ID="ddlGe

我有一个非常简单的网站(),它包含一个页面,该页面生成随机日期时间值并将其写入标签,该页面的代码是:

<form id="form1" runat="server">
    <div>
        <asp:Label ID="lblGeneratedDateTime" runat="server"></asp:Label>
        <br />
        <asp:DropDownList ID="ddlGenerateDateTime" runat="server" AutoPostBack="true" 
            onselectedindexchanged="ddlGenerateDateTime_SelectedIndexChanged">
            <asp:ListItem Selected="True" Value="0">Today</asp:ListItem>
            <asp:ListItem Value="1">-1 day</asp:ListItem>
            <asp:ListItem Value="2">-2 days</asp:ListItem>
        </asp:DropDownList>
    </div>
    </form>
item.SetAttribute("value", "1");
item.InvokeMember("onchange");

item.SetAttribute("value", "2");
item.InvokeMember("onchange");
现在,从WinForm应用程序中,我需要读取页面上生成的时间,因此对于默认值,我需要:

string url = "http://mysite.com";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader streamReader = new StreamReader(response.GetResponseStream());
string page = streamReader.ReadToEnd();

int start = str.IndexOf("lblGeneratedDateTime\">") + 22;
int end = str.LastIndexOf("</span>");

string generatedDateTime = str.Substring(start, end - start);

return generatedDateTime;
item.SetAttribute("value", "1");
item.InvokeMember("onchange");

item.SetAttribute("value", "2");
item.InvokeMember("onchange");
stringurl=”http://mysite.com";
HttpWebRequest请求=(HttpWebRequest)WebRequest.Create(url);
HttpWebResponse=(HttpWebResponse)request.GetResponse();
StreamReader StreamReader=新的StreamReader(response.GetResponseStream());
string page=streamReader.ReadToEnd();
int start=str.IndexOf(“lblGeneratedDateTime\”>”)+22;
int end=str.LastIndexOf(“”);
字符串generatedDateTime=str.Substring(开始,结束-开始);
返回生成的日期时间;
我如何在-1天和-2天内读取生成的值(页面内容),这需要对DropDownList进行回发。或者这是不可能的

item.SetAttribute("value", "1");
item.InvokeMember("onchange");

item.SetAttribute("value", "2");
item.InvokeMember("onchange");
谢谢你的回复

item.SetAttribute("value", "1");
item.InvokeMember("onchange");

item.SetAttribute("value", "2");
item.InvokeMember("onchange");

添加。我无法更改网站的代码!

您不能这样做……您将html响应作为字符串下载,因此无法与页面交互并模拟下拉更改

item.SetAttribute("value", "1");
item.InvokeMember("onchange");

item.SetAttribute("value", "2");
item.InvokeMember("onchange");

您可以尝试使用WebClient并提交具有不同值的表单页下拉列表。这将生成不同的响应,您可以使用上面的代码进行解析。

需要改用WebBrowser

WebBrowser wb = new WebBrowser();

wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted);

string url = "http://mysite.com";

wb.Navigate(url);

HtmlElement item = wb.Document.GetElementById("ddlGenerateDateTime");
item.SetAttribute("value", "1");
item.InvokeMember("onchange");

item.SetAttribute("value", "2");
item.InvokeMember("onchange");
然后

item.SetAttribute("value", "1");
item.InvokeMember("onchange");

item.SetAttribute("value", "2");
item.InvokeMember("onchange");

在这种情况下,可以将回发发送到页面。

HTML agility pack可能会执行您需要的操作,这里是一个如何…任何代码示例如何更改(或读取内容)下拉值的定义?我没有广泛使用它,但网上有很多文档。它将把你的html变成一个对象结构,你可以不用字符串匹配来查询。或者我同意Richard的观点,如果可以,为什么不返回一些你可以解析的东西呢?我无法更改网站的代码
item.SetAttribute("value", "1");
item.InvokeMember("onchange");

item.SetAttribute("value", "2");
item.InvokeMember("onchange");