也许我问一个简单的问题,但我有:)
我有一个站点(称之为SenderSite)和发布接收站点(称之为ReceiverSite)。他们托管的是互联网上不同的主机服务器SenderSite用asp.net编写,ReceiverSite用asp.net mvc编写。
我在浏览器中打开SenderSite。我有数据和文本框的表单,我可以在其中编写响应的网址(例如,www.example.com / TestMethod)。当我点击发送时,请求将发送到重置站点。 mvc方法应该如何接收帖子数据。
我写得像:
[HttpPost]
public void TestMethod()
{
}
我应该为这个方法写一些参数吗?当我接受它时,我可以在页面中写它吗?
谢谢!
答案 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"]
。