【问题标题】:Send a POST request to one page but redirect to another向一个页面发送 POST 请求但重定向到另一个页面
【发布时间】:2012-08-13 18:56:09
【问题描述】:

在我的控制器中尝试实现这一点确实遇到了麻烦。从本质上讲,我有一个控制器,而不是在它完成时将用户传递到如下 URL:

    <HttpPost()>
    Function Create(job As Job) As ActionResult
        If ModelState.IsValid Then
            db.Jobs.Add(job)
            db.SaveChanges()
            Dim url As String = "/RequestedService/AddService/" + job.JobId.ToString()
            Return Redirect(url)
        End If

        Return View(job)
    End Function

但是,我正在尝试实现每次调用此控制器时发送 SMS 的功能,并使用如下 URL 进行处理(没有用户名或密码): http://go.bulksms.com:1557/send?username=fred&message=hello 这需要通过 HTTP 发布请求进行访问。我知道我可以在上面的“返回重定向”中返回此 URL,但我希望两者都发生(重定向和此链接上发送 SMS 的帖子),理想情况下,我希望用户像现在一样被重定向到页面但是要在后台发送的短信。我将如何实现它?

【问题讨论】:

  • 您能做的最多的事情是,从您的客户端调用一个 ajax,并在您的操作中返回一个 JavascriptResult,然后在成功方法中使用操作的 url 和需要传递的参数

标签: vb.net asp.net-mvc-3 sms-gateway


【解决方案1】:

试试这个。在两个注释行之间添加了新代码。您也可以参考url 了解详细信息,如果是 POST,您可能需要传递一些表单数据,这些都在上面的链接中进行了描述。:

<HttpPost()>
    Function Create(job As Job) As ActionResult
        If ModelState.IsValid Then
            db.Jobs.Add(job)
            db.SaveChanges()
            'Sending SMS here: (start)
            Dim request as WebRequest = WebRequest.Create("http://go.bulksms.com:1557/send?username=fred&message=hello")
            request.Method = "POST"
            Dim response As WebResponse = request.GetResponse()

            'end
            Dim url As String = "/RequestedService/AddService/" + job.JobId.ToString()
            Return Redirect(url)
        End If

        Return View(job)
    End Function

【讨论】:

  • 太棒了!完美运行!
【解决方案2】:

重定向始终是GET 请求

要发布到不同的 URL,您需要使用 HttpWebRequest 类从您的代码中调用它。

【讨论】:

  • 啊,感谢 GET 的提醒。我究竟如何使用 HttpWebRequest 调用它,我不太确定在我的代码中会发生这种情况,因为我尝试使用智能感知来查找 HttpWebRequest 但没有运气(对不起,我对 ASP 相当新手)
猜你喜欢
  • 2012-07-28
  • 1970-01-01
  • 1970-01-01
  • 2011-03-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-27
  • 2016-12-14
  • 1970-01-01
相关资源
最近更新 更多