在asp.net mvc网站上获取外部网站的回复

时间:2015-03-13 09:05:06

标签: c# asp.net asp.net-mvc post request

也许我问一个简单的问题,但我有:)

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

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

我写得像:

[HttpPost]
public void TestMethod()
{

}

我应该为这个方法写一些参数吗?当我接受它时,我可以在页面中写它吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

您可以创建一个对象,即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>

由于您无法轻松将Name属性设置为Id,因此您还需要使用一些jQuery将字段重命名为变通方法:

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

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

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

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

如果添加/删除了属性需要更改的方法,那么将所有参数添加到方法的缺点是。

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