从 asp.net mvc 站点中的外部站点获取 post 响应

Get post response from external site in asp.net mvc site

也许我问了一个简单的问题,但我知道了:)

我有一个站点(称为 SenderSite)和 post 接收站点(称为 ReceiverSite)。他们托管的是互联网上的不同主机服务器。 SenderSite写在asp.net,ReceiverSite写在asp.netmvc.

我在浏览器中打开 SenderSite。我有包含数据和文本框的表单,我可以在其中编写 url 接受响应的站点(例如,www.example.com/TestMethod)。当我单击发送时,请求将发送到接收方站点。 mvc 方法应该如何接收 post 数据。

我这样写:

[HttpPost]
public void TestMethod()
{

}

我应该为这个方法写一些参数吗?什么时候拍,可以写在纸上吗?

谢谢!

您可以创建一个对象,即 SentModel,然后确保来自发送站点的名称字段与对象中的属性匹配。

举个例子:

public class SentModel
{
    public string Input1 { get; set; }
    public string Intput2 { get; set; }
}

[HttpPost]
public void TestMethod(SendModel model)
{
    model.Input1.ToString();
}

然后在你的aspx页面中:

<form method="post" action="http://www.example.com/Controller/TestMethod" id="form1">
<div>
 <asp:textbox runat="server"  id="Input1" ClientIDMode="Static" />
 <asp:textbox runat="server"  id="Intput2" ClientIDMode="Static" />
 <input type="submit" value="submit" />
</div>
</form>

由于您无法轻松地将名称 属性 设置为 ID,因此您还需要使用一些 jQuery 来重命名字段作为解决方法:

 $.each($('div').children(), function() {
      $(this).attr("name",$(this).attr("id"));
   });

以上具有强类型对象的优势,您可以从中提取属性。您还可以向对象添加数据注释以控制对操作的验证。

另一种选择是在控制器操作中包含表单名称参数:

[HttpPost]
public void TestMethod(string Input1, string Input2)
{
    Input1.ToString();
}

如果 属性 是 added/removed,那么您的方法需要更改。

最后一个选项只是将其从请求中提取为 Request.Form["Input1"]