【发布时间】:2011-01-06 04:08:01
【问题描述】:
我们公司的一个部门正在使用经典的 asp.net,而我们的部门正在使用 MVC。
我们需要将 5 个变量传递给他的页面(通过表单提交)。有人可以展示一个将表单数据从 MVC 控制器发布到期望表单变量的 asp.net 页面的简单示例吗?
【问题讨论】:
标签: c# asp.net-mvc-2 post get
我们公司的一个部门正在使用经典的 asp.net,而我们的部门正在使用 MVC。
我们需要将 5 个变量传递给他的页面(通过表单提交)。有人可以展示一个将表单数据从 MVC 控制器发布到期望表单变量的 asp.net 页面的简单示例吗?
【问题讨论】:
标签: c# asp.net-mvc-2 post get
如果我没看错,您应该能够做到这一点,而无需担心跨域/应用程序。您想在控制器中执行此操作,因此您可以使用HttpWebRequest 类来发布数据。就目标应用程序而言,它在概念上与从 Web 浏览器发布内容相同。
这是一个快速而肮脏的 sn-p:
// name / value pairs. field names should match form elements
string data = field2Name + "=" + field1Value + "&" + field2Name+ "=" + field2Value
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(<url to other applications form action>);
// set post headers
request.Method = "POST";
request.KeepAlive = true;
request.ContentLength = data.Length;
request.ContentType = "application/x-www-form-urlencoded";
// write the data to the request stream
StreamWriter writer = new StreamWriter(request.GetRequestStream());
writer.Write(data);
// iirc this actually triggers the post
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
【讨论】:
如果您跨域或跨应用程序,我认为您可能不走运。你能直接到另一个站点并使用查询字符串吗?
或者写到一个表并直接到另一个站点。
真的不确定您是否能够在其他网站上发帖,因为我认为这违反了安全模型。
【讨论】:
我可能遗漏了这个微妙的问题,但你不能将 MVC 表单上的 action 设置为将接收它的经典 asp 页面的 url 吗?
这些字段将在您可以在 ASP 端读取的表单标题中提供。
唯一的问题是 ASP 站点是否具有跨站点请求伪造检测(但如果它们是内部应用,您可以在 ASP 端向伪造检测代码添加例外)。
【讨论】: