我有一个AngularJS应用程序,必须将数据发布到第三方URL。为了解决CORS浏览器问题,我将数据发布到我的.net控制器,然后将其发布到第三方URL。在我的javascript文件中,我构建了我想传递给第三方网址的查询字符串。这是我的代码发布到我的.net控制器:
<%= form_for @score do |s| %>
<%= s.radio_button :value, 1, id: "v_1" %>
<label for = "v_1">Label 1</label>
<%= s.radio_button :value, 2, id: "v_2" %>
<label for = "v_2">Label 2</label>
<%= s.submit "Submit" %>
<% end %>
我的c#控制器:
var parms = "name=john&phone=1234567890&sex=male";
return $http({
url: '/UserForm/PostData/',
method: "POST",
data: parms
});
PostData中的parms变量为null。将查询字符串字符串传递给控制器需要做什么?
答案 0 :(得分:2)
你能试试吗?首先 - 为什么不在控制器发布请求定义中定义所有参数?第二 - 我猜你的网址有误,你不需要在&#34; / UserForm / PostData&#34; 之后使用斜杠(如果你不使用某些当然,你的MVC中的自定义路由)
$http.post("/UserForm/PostData", { name: "john", phone: "1234567890", sex: "male" }).then(blahblahal....;
+
[HttpPost]
public string PostData(String name, String phone, String sex)
{
return "";
}
答案 1 :(得分:1)
如果这是针对WebApi控制器,而不是尝试将parms
作为传递给操作的参数读取,请使用ReadAsString
来读取发布的数据。在您的示例中,结果应与parms
变量中的值相同。
[HttpPost]
public IHttpActionResult PostData()
{
var parms = Request.Content.ReadAsStringAsync().Result;
// Submit parms to third-party api.
return Ok();
}
此任务更适合WebApi,但如果您需要使用MVC控制器,则可以通过读取Request.InputStream来读取发布的内容:
public ActionResult PostData()
{
string parms;
using (var sr = new System.IO.StreamReader(Request.InputStream))
{
parms = sr.ReadToEnd();
}
// Submit parms to third-party api.
return new EmptyResult();
}
答案 2 :(得分:0)
你可以试试这个。
[HttpPost]
public string PostData(System.Net.Http.Formatting.FormDataCollection form)
{
string name=form.get("name");
string phone=form.get("phone");
string sex=form.get("sex");
}
否则你也可以试试这个解决方案,你只需要添加几行。
public class PersonData
{
public string name { get; set; }
public string phone { get; set; }
public string sex { get; set; }
}
[HttpPost]
public string PostData([FromBody]PersonData form)
{
string name=form.name;
string phone=form.phone
string sex=form.sex;
}