AngularJs将查询字符串发布到c#控制器
AngularJs post query string to c# controller
我有一个AngularJS应用程序,它必须将数据发布到第三方URL。为了解决CORS浏览器的问题,我将数据发布到我的.net控制器,然后该控制器将其发布到第三方URL。在我的javascript文件中,我已经构建了要传递给第三方URL的查询字符串。这是我发布到.net控制器的代码:
var parms = "name=john&phone=1234567890&sex=male";
return $http({
url: '/UserForm/PostData/',
method: "POST",
data: parms
});
我的c#控制器:
[HttpPost]
public string PostData(String parms)
{
return "";
}
PostData中的parms变量为null。我需要做什么才能将查询字符串传递到控制器?
你能试试这个吗?首先,为什么不在控制器请求后定义中定义所有参数?第二,我想你的URL中有一个错误,你不需要在"/UserForm/PostData"后面加斜线(当然,如果你在MVC中没有使用一些自定义路由)
$http.post("/UserForm/PostData", { name: "john", phone: "1234567890", sex: "male" }).then(blahblahal....;
+
[HttpPost]
public string PostData(String name, String phone, String sex)
{
return "";
}
如果这是针对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();
}
你可以试试这个。
[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;
}
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 如果没有Ember中的控制器,我如何更改查询参数
- 使用查询将对象数组发布到asp.net-mvc控制器操作的正确方法是什么
- AngularJs将查询字符串发布到c#控制器
- MongoDB查询结果作为循环控制器
- 使用 Ajax POST 查询 MVC 控制器,然后使用模型重定向
- 角度 ui 路由器可选查询参数加载控制器两次
- 将 emberjs 查询参数的作用域限定为控制器
- Ember js如何访问控制器中的查询参数
- 为什么我不需要在Sails.js控制器函数中调用next,即使它在其主体中有一个(异步的?)数据库查询
- 如何从MVC控制器文件中使用查询组件选择extjs网格动作列
- 将查询结果从rails控制器传递到javascript
- 从客户端控制器指定Mongo查询参数(MEAN.JS)
- 如何解析Ember.js控制器中的数组查询参数?
- node.js mongodb在控制器中使用MEAN栈查询
- 在grails中在视图和控制器查询之间传递值
- 在ui-router状态控制器中检索查询参数
- 如何在模型和控制器之间发送带有续集的查询结果
- Ajax查询字符串没有发布到ASP.网络控制器