在C#中使用webclient提交表单

时间:2015-04-16 16:55:26

标签: c# asp.net webclient

我想学习如何通过传递参数的代码提交表单。 简单形式:testform.aspx表格

<form id="form1" runat="server">
<div>
    <asp:TextBox ID="myname" runat="server"></asp:TextBox>
    <asp:Button ID="Button1" runat="server" Text="Button" 
        onclick="Button1_Click1" />
</div>
</form>

action.aspx将调用testform.aspx

    string testURL = "http://www...../testform1.aspx";
    string myParameter = "myname=bob";
    using (WebClient wc = new WebClient())
    {
        wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
        string HtmlResult = wc.UploadString(testURL, myParameter);
    }

它不起作用。

我错过了什么吗?当我在调试模式中检查HtmlResult的值时,我看到:

  <form method="post" action="testform1.aspx" id="form1">
 <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE0MDM4MzYxMjNkZIS41aWul6tldK7bcOjKW+U0EcsKsj2DW+D0GaLgyHOb" />
<div>
    <input name="myname" type="text" id="myname" />
    <input type="submit" name="Button1" value="Button" id="Button1" />
</div>
</form>

myname属性中没有值...为什么?

我自己测试了testform.aspx并且它有效。提交时,它会将值保存到文件中。

1 个答案:

答案 0 :(得分:1)

您应该使用UploadValues传递值

using (WebClient client = new WebClient())
{

    NameValueCollection vals = new NameValueCollection();
    vals.Add("myname", "bob");
    client.UploadValues("http://www...../testform1.aspx", vals);                
}

有关UploadValues方法的更多信息,请访问https://msdn.microsoft.com/en-us/library/9w7b4fz7%28v=vs.110%29.aspx