【问题标题】:Asp.net - Post form data to a seperate URL without creating a new RequestAsp.net - 将表单数据发布到单独的 URL 而不创建新请求
【发布时间】:2009-09-17 16:27:26
【问题描述】:

虽然这与其他问题相似,但我一直无法弄清楚这一点,而且我因为不知道该怎么做而感到很愚蠢。

1) 我不能使用 PostbackURL 属性来点击按钮。

基本上我需要做的是,当用户单击按钮时,我需要将数据发布到单独的 URL。在表格中找不到该数据。我需要在后面的代码中以编程方式添加数据。

所以用户会点击“发送”。然后,我会将用户的电子邮件、名字、姓氏添加到我假设的命名值集合中,然后将其发布到某个 URL。

我的问题是,你到底是怎么做到的?到目前为止,我一直无法在网上找到任何明确说明这是如何完成的内容,没有创建新的 HttpWebRequest。

根据以下评论进行编辑:

基本上,我们将我们的会员资格与一个单独的应用程序整合在一起,这在以前已经奏效了。不幸的是,他们的技术支持并没有多大帮助。

基本上,用户在他们的网站上并试图做一些需要您登录的事情。

用户被重定向到我的登录页面。 用户输入凭据。 如果用户进行身份验证,我会将他们的信息(姓名、电子邮件等)发布到特定的 URL。该 URL 将在用户端创建用户(如果他们不存在)和/或将他们重定向到他们第一次尝试访问的任何 URL。

我有这个工作,但是因为我正在创建一个新的 HttpWebRequest 对象,所以他们末端的重定向不起作用。

我可以在查询字符串中完成所有这些操作,但是由于发布的数据量我认为我会超过 URL 字符限制。

【问题讨论】:

    标签: asp.net forms httpwebrequest


    【解决方案1】:

    您可以查看Server.Transfer 方法。这将(在服务器上,而不是客户端上)将所有执行转移到新页面,包括当前表单和查询字符串集合,并将该页面的结果发送回客户端浏览器。

    但是,阅读问题的最后一部分意味着您可能没有转移到服务器上的页面,是吗?在这种情况下,这可能对您不起作用。


    编辑以回复评论

    您能否从您的角度阐明您希望用户看到的内容?

    • 他们在 www.example.com/someform.aspx 上填写表格,然后按提交。
    • 表单被提交回服务器(someform.aspx),在服务器端进行一些处理,然后将原始表单详细信息以及一些附加字段发布到 www.someotherserver.com/anotherform.xxx
    • 此时应该向用户显示什么? someotherserver.com 上的页面结果,还是来自您服务器的其他内容?

    在某些时候,您将需要向 3rd 方站点创建一个新请求 - 这可能是通过 JavaScript 从客户端浏览器通过 Response.Redirect 之类的方式发出的,在这种情况下,您只能进行查询-string 字段,用户会知道他们已经被发送到其他地方,或者使用 HttpWebRequest 在幕后发送。

    就个人而言,我只是不认为它可以按照你想要的方式完成。

    【讨论】:

    • 不,我将发布到一个完全独立的应用程序 [URL]
    【解决方案2】:

    如果用户总是在另一个页面上发帖,您可以执行以下操作。

    1.) 将您要添加的信息添加到页面上的隐藏字段中,这样它就在那里。 2.) 然后修改表单对象上的“Action”,直接发布到其他页面。

    现在取决于可能有​​效也可能无效的实现

    【讨论】:

    • 我无法将字段添加到页面,因为只有在用户单击提交按钮后才会填充字段。基本上它是一个登录功能。用户登录,填充用户对象,然后将这些属性发布到不同的 URL。
    【解决方案3】:

    制作第二个表单,将 postbackurl 设置为目标站点。这可能是另一个页面,也可能是同一页面中隐藏的第二个表单。

    一旦用户提交了主要表单,您就可以从代码中填写第二个表单的(隐藏)字段,并在页面加载时使用 javascript form.submit() 提交它(从代码隐藏中插入 javascript)。

    当然,仅使用 Response.Redirect 更容易,这相当于从浏览器发起 GET。

    我可以向您指出,POST 变量也很容易被用户操纵吗? 它比操纵 URL 不那么明显,因此对于非技术用户来说,这里的速度有些慢。

    但是POST 中没有安全性和数据保护!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多