HTML表单跨域发送到asp.net控制器

本文关键字:asp net 控制器 表单 HTML | 更新日期: 2023-09-27 17:51:17

我已经创建了一个ASP。NET MVC 5 web应用程序,必须接收来自外部站点的帖子(在同一公司内部网内)。我设置了我的控制器方法,并创建了另一个web应用程序来模拟帖子。张贴页面表单如下所示:

<form action="http://localhost:12345/Home/MethodName" method="post">
    <input type="text" id="fullName" value="Joseph B. Blow" />
    <input type="text" id="dateOfBirth" value="3/4/1977" />
    <input type="submit" value="Submit" />
</form>

我在调试模式下启动我的"receiver"应用程序,并在"/Home/MethodName"的第一行设置一个断点,断点被击中。MethodName看起来像这样:

[HttpPost]
[ValidateInput(false)]
public ActionResult MethodName()
{
    ...code here
}

当我检查MethodName中的Request.Form对象时,它完全为空。在浏览器中使用开发人员工具时,Content-Length为0。我尝试创建一个具有属性fullNamedateOfBirth的自定义模型类,并将其用作MethodName中的唯一参数,但对象的属性始终为空。我也试图使用FormCollection对象,它不包含键。我所做的另一个尝试是使用StreamReader对象,并在Request.InputStream对象上使用它,看看是否会将发布的值拉入。

我可能会考虑使用ajax调用来发布数据,但问题是用户也必须重定向到页面。公司有一项安全策略,禁止使用querystring在站点到站点之间传递数据(我知道,post不一定比get更安全,但这是规则)。

这看起来不应该这么难,但我有一个熊的时间。如果有人做过类似的事情,或者可以向我指出另一个方向,让这些值从一页传递到另一页,我将非常感激。

HTML表单跨域发送到asp.net控制器

我是个大傻瓜。要使它工作,我所要做的就是在表单输入中包含name属性,然后控制器就可以看到这些值。换句话说,不是

<input type="text" id="fullName" value="Joseph B. Blow" />

我改成

<input type="text" NAME="fullName" value="Joseph B. Blow" />

我把自己展示成一个完整的工具的唯一原因是希望它能帮助那些可能有同样问题的人。