【问题标题】:Redirect to page, pre-filling form fields重定向到页面,预填充表单域
【发布时间】:2011-07-27 21:31:51
【问题描述】:

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

  1. 我(我想我)需要重定向到页面本身,而不是简单地“抓取”它。
  2. 我不想提交表单 - 只需打开它并预先填写一些字段即可。我的用户需要检查输入,并在提交之前(可能)填写更多内容。

这是我迄今为止尝试过的(感谢 Peter Bromberg here 的博客帖子。)

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)这对于他使用的亚马逊 url 工作正常,但是当我尝试对 .aspx 页面执行此操作时,它根本不起作用(表单字段中没有任何内容)。

情况是,我的公司已将许多传统的纸质表格放到网上。离开请求,合同,或者你的名字。这在审批路由方面是一个很大的改进。但是,我们现在的情况是,我们将所有这些数据输入了两次——一次输入数据库以供管理使用,然后第二次输入表格以供批准。我想做的是让某人像他们已经做的那样将数据输入我们的数据库(通过我已经构建的 asp.net 应用程序),然后当他们准备好时,单击一个将数据移植到的按钮在线审批表。

顺便说一句——在线审批流程由不同的部门管理,他们不愿意以任何方式修改他们的流程。所以任何解决这个问题的方法都必须从我这边开始。我知道从我的数据库中获取他们的表单查找数据会更有意义,但不幸的是(政治上)这是不可能的。

有这方面的经验吗?

编辑 ----------
我试图妥协并允许提交表单——到目前为止还没有任何乐趣。发现一篇文章暗示视图状态可能是使用 asp.net 表单执行此操作的问题,因此我尝试发布视图状态,但它不起作用(500 服务器错误)。这是文章:http://www.canaware.com/default.aspx?g=posts&t=569

所以现在我正在尝试通过 iframe 来执行此操作,根据我从 @Guffa 得到的答案之一。

【问题讨论】:

  • 这是一个非常古老的问题,但现在您可以使用浏览器自动化,例如Watin,并完全控制浏览器(包括预填充字段)。我们已经在多个需要在系统/网站之间共享数据的项目上做到了这一点。

标签: asp.net forms webclient webrequest


【解决方案1】:

如果表单页面在同一个域中,您可以在 iframe 中打开表单页面,并通过使用 Javascript 访问表单字段来预填写表单。

如果表单页面不在同一个域中,它会变得更加复杂。您不能预先填写表单,但您可以抓取表单页面(而不是像您的示例那样抓取结果页面),更改 HTML 代码以预先填写字段,然后将表单显示给用户。如果表单是相对 URL,您可能还必须更改表单的操作,以使其指向实际结果页面。

【讨论】:

  • 感谢您的建议。我会尝试这种方法。
【解决方案2】:

你只是用一个aspx页面进行测试,还是在线审批表是一个aspx页面?

您可以尝试将 URL 参数添加到 GET 请求而不是 POST。

http://www.amazon.co.uk/exec/obidos/search-handle-form?field-keywords=Harry+Potter

【讨论】:

  • 我看到 Guffa 对 Jay 帖子的评论也适用于我的建议。
猜你喜欢
  • 2019-07-23
  • 2011-01-22
  • 2010-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-08
  • 2010-12-06
  • 2014-05-03
相关资源
最近更新 更多