2015-03-13 66 views
1

也许我问简单的问题,但我有它:)获得来自外部网站在asp.net mvc的网站后响应

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

我在浏览器中打开SenderSite。我使用数据和文本框的形式,可以编写响应的url网站(例如,www.example.com/TestMethod)。当我点击发送时,请求会发送给关闭的站点。 mvc方法应该如何接收发布数据。

我把它写这样的:

[HttpPost] 
public void TestMethod() 
{ 

} 

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

谢谢!

回答

2

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

正如你不能设置名称属性是标识很容易,你还需要使用一些jQuery的将字段重命名为解决方法:

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

上述方法具有强类型对象的好处,其中y你可以从中提取属性。您还可以将数据注释添加到对象以控制进入操作的验证。

另一种选择是包括在控制器动作表单名称参数:

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

这有加入的所有参数的方法,如果添加的属性的缺点/删除你的方法需要改变。

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