【发布时间】:2013-12-20 03:17:30
【问题描述】:
嗯,标题一定很混乱,我不确定我写对了。这是我的情况。我有一些动作的控制器。我想要做的是使用WebClient 将一些数据发布到外部站点,并将用户重定向到外部站点对此帖子的响应。到目前为止,我得到以下内容:我得到像字节数组一样的响应并将其转换为FileContentResult。但我真的不确定这是否正确,因为我希望用户在发布后在外部网站上,在那里做一些事情,然后他将被重定向回我的网站。我正在实施支付系统,我确信有一些随意且更正确的实施方式,但不像以下:
public ActionResult Action()
{
var data = new NameValueCollection()
{
{ "arg1", "val1" },
{ "arg2", "val2" }
};
using (WebClient client = new WebClient())
{
byte[] response = client.UploadValues("http://external-site.com/some-service",data);
return new FileContentResult(response, "text/html");
}
}
作为一个选项,我可以(我之前做过)创建部分视图小部件,使用该小部件将数据发布到外部站点,并将所有必要的数据写入隐藏输入,如下所示:
public PartialViewResult Action()
{
var model = new Model {Arg1 = "val1", Arg2 = "val2", Url = "http://external-site.com/some-service"};
return PartialView(model);
}
<form action='@Model.Url' method="POST">
@Html.HiddenFor(m => m.Arg1)
@Html.HiddenFor(m => m.Arg2)
<input type="submit" value="Pay with blah-blah">
</form>
在这种情况下,Arg1 和 Arg2 基本上是发票金额、货币等。但在我的情况下,有些值我不想在呈现的 html 中发送给用户,所以我想在控制器中发布这篇文章通过WebClient,但我不确定如何正确处理外部响应并根据此响应重定向用户。
【问题讨论】:
-
是否应该打电话给您的控制器来发帖?我建议您可以使用 Jquery 跨域 Ajax - api.jquery.com/jQuery.ajax(如果您已经在使用 jquery)。这样您就不必担心发回响应...
-
@SridharVenkat,我希望从控制器拨打电话。
标签: c# asp.net asp.net-mvc webclient