我正在尝试打开一个网页(不在我的控制之下),并预先填充了一些字段。我有两个挑战,我遇到了一些麻烦。
以下是我迄今为止所尝试过的内容(感谢彼得·布隆伯格的{BLIBG博客{/ 3}}。
Protected Sub btn_Submit_amazon_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn_Submit_amazon.Click
Dim myURL As String = "http://www.amazon.co.uk/exec/obidos/search-handle-form"
Dim myFormData As New NameValueCollection()
myFormData("field-keywords") = "Harry Potter"
Dim myWebClient As New WebClient()
Dim myResponseBytes As Byte() = myWebClient.UploadValues(myURL, "POST", myFormData)
Dim myResponse As String = Encoding.UTF8.GetString(myResponseBytes)
Response.Write(myResponse)
End Sub
这种方法的缺点是1)它提交表单,2)这适用于他使用的亚马逊网址,但是当我尝试对.aspx页面执行此操作时,它根本不起作用(表单字段中没有任何内容。)
情况是我公司在网上放了很多传统的纸质表格。请假,合同或您为其命名。在批准路由方面,这是一个很大的改进。但是,我们现在处于这样的情况:我们输入所有这些数据两次 - 一次进入数据库以供管理使用,然后第二次进入表单进行审批。我想做的是,有人将数据输入我们的数据库(通过我已经构建的asp.net应用程序),然后当它们准备就绪时,单击一个按钮将数据移植到在线审批表。
BTW - 在线审批表格流程由不同的部门管理,他们不愿意以任何方式修改他们的流程。因此,任何解决方案都必须从我的房子开始。我知道从我的数据库中获取表单查找数据会更有意义,但不幸的是,这在政治上是不可能的。有这方面的经验吗?
编辑----------
我试图妥协,并允许提交表格 - 到目前为止没有快乐。发现一篇文章表明viewstate可能是使用asp.net表单执行此操作的问题,因此我尝试发布viewstate,但它不起作用(500服务器错误)。这是文章:here
所以现在我正试图通过iframe,根据我从@Guffa得到的一个答案来做到这一点。
答案 0 :(得分:1)
如果表单页面位于同一个域中,您可以在iframe中打开表单页面,并使用Javascript访问表单字段来预填表单。
如果表单页面不在同一个域中,则会变得更加复杂。您无法预先填写表单,但您可以抓取表单页面(而不是像示例中那样抓取结果页面),更改HTML代码以预填充字段,然后将表单显示给用户。如果表单是相对URL,您可能还必须更改表单的操作,以便它指向实际的结果页面。
答案 1 :(得分:0)
This帖子可以帮助你。
答案 2 :(得分:0)
您只是使用aspx页面进行测试,还是在线批准表单是aspx页面?
您可以尝试将网址参数添加到GET请求而不是POST。
http://www.amazon.co.uk/exec/obidos/search-handle-form?field-keywords=Harry+Potter