繁体   English   中英

如何将数据从asp.net MVC控制器发布到非MVC asp.net页面?

[英]How do I POST data from an asp.net MVC controller to a non-MVC asp.net page?

我们公司的一个部门使用经典的asp.net,而我们的部门正在使用MVC。

我们需要将5个变量传递给他的页面(通过表单提交)。 有人可以展示一个简单的例子,将表单数据从MVC控制器发布到期望表单变量的asp.net页面吗?

如果我正确地阅读此内容,您应该能够在没有任何跨域/应用程序问题的情况下执行此操作。 您希望在控制器中执行此操作,因此您可以使用HttpWebRequest类发布数据。 就目标应用程序而言,它在概念上与从Web浏览器发布相同。

这是一个快速而又脏的片段:

// 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端添加伪造检测代码的例外)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM