重定向到页面,预填表格字段

时间:2011-07-27 21:31:52

标签: asp.net forms webclient webrequest

我正在尝试打开一个网页(不在我的控制之下),并预先填充了一些字段。我有两个挑战,我遇到了一些麻烦。

  1. 我(我想)我需要重定向到页面本身,而不是简单地“刮”它。
  2. 我不想提交表单 - 只需打开一些预先填好的字段即可。我的用户需要查看输入,并在提交之前填写更多内容(可能)。
  3. 以下是我迄今为止所尝试过的内容(感谢彼得·布隆伯格的{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得到的一个答案来做到这一点。

3 个答案:

答案 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