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

时间:2015-05-29 18:25:47

标签: c# html asp.net post cross-domain

我创建了一个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>

我开始接收&#34;接收器&#34;应用程序处于调试模式并在&#34; / Home / MethodName&#34;的第一行设置断点。并且断点被击中。 MethodName看起来像这样:

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

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

我可能会考虑使用ajax调用来发布数据,但问题是用户还必须重定向到页面。有一个公司安全策略反对不使用查询字符串从站点到站点传递数据(我知道,帖子不一定比获取更安全,但是会破坏规则)。

这似乎不应该是这么难,但我有一段时间与它相处。如果有人做了类似的事情或者可能指向另一个方向让这些值从一个页面传递到另一个页面,我将非常感激。

提前致谢。

1 个答案:

答案 0 :(得分:1)

我是一个大假人。为了让它工作,我所要做的就是在表单输入中包含name属性,然后控制器可以看到值。换句话说,而不是

 <form action="scanBoard.php" method="post" name="scanBoard" >
      <input type="text" id="lat" value="52.562292" /><br>
       <input type="text" id="long" value="-0.660871" /><br>
     <div id="boardBtn" class="blink"><input class="button" type="image" src="img/boardBtn.png" ></div></form>

我把它改成了

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

唯一的理由是我将自己暴露为一个完整的工具,希望它可以帮助其他可能遇到同样问题的人。