AngularJs将查询字符串发布到c#controller

时间:2016-04-29 01:46:19

标签: javascript c# asp.net angularjs

我有一个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。将查询字符串字符串传递给控制器​​需要做什么?

3 个答案:

答案 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;
}