net core后台接收 Form ajax post get请求参数:
目录
Get方法直接string接收值
$.ajax({
url: "/AjaxRequest/GetString?str=一句话&id=1",
type: 'get',
success:function(response){
alert(response);
}
});
[HttpGet]
public IActionResult GetString(string str, int id)
{
IQueryCollection queryParameters = HttpContext.Request.Query;
string qstr = queryParameters["str"];
string qid = queryParameters["ID"];
Console.WriteLine($"通过参数接收:str:{str},id:{id}");
Console.WriteLine($"通过原生方式参数接收:str:{qstr},id:{qid}");
return new JsonResult("调用成功");
}
Post接收字符串
$.ajax({
url: "/AjaxRequest/PostString",
dataType: 'json',
type: 'post',
data:{ str : "一句话",id : 1},
success:function(response){
alert(response);
}
});
[HttpPost]
public IActionResult PostString(string str, int id)
{
IFormCollection queryParameters = HttpContext.Request.Form;
string qstr = queryParameters["str"];
string qid = queryParameters["ID"];
Console.WriteLine($"通过参数接收:str:{str},id:{id}");
Console.WriteLine($"通过原生方式参数接收:str:{qstr},id:{qid}");
return new JsonResult("调用成功");
}
Post—FromQuery
- 跟上一个方法,前台请求未变,只是接收参数增加FromQuery。效果一样。
[HttpPost]
public IActionResult PostStringFromForm([FromForm]string str, [FromForm] int id)
{
IFormCollection queryParameters = HttpContext.Request.Form;
string qstr = queryParameters["str"];
string qid = queryParameters["ID"];
Console.WriteLine($"通过参数接收:str:{str},id:{id}");
Console.WriteLine($"通过原生方式参数接收:str:{qstr},id:{qid}");
return new JsonResult("调用成功");
}
- 下述内容会用到的实体类:
public class Person
{
public int? Id { get; set; }
public string Name { get; set; }
}
FromForm与FromBody的区别为
- FromForm:前台Data传来为Json,未转义为字符。可以实体也可以单个参数来接收。
- FromBody:前台Data传来为转义为Json字符串,用实体类来接收。
Post—实体类FromForm
$.ajax({
url: "/AjaxRequest/PostModelFromForm",
dataType: 'json',
type: 'post',
data:{ Id : 1,Name : "PostModelFromForm"},
success:function(response){
alert(response);
}
});
[HttpPost]
public IActionResult PostModelFromForm([FromForm]Person person)
{
Console.WriteLine($"通过参数接收:str:{JsonConvert.SerializeObject(person)}");
return new JsonResult("调用成功");
}
Post—实体类FromForm
- 实体与参数分别赋值。
Post—实体类FromBody
$.ajax({
url: "/AjaxRequest/PostModelFromBody",
dataType: 'json',
contentType: 'application/json; charset=utf-8',
type: 'post',
data:JSON.stringify({ Id : 1,Name : "PostModelFromBody"}),
success:function(response){
alert(response);
}
});
[HttpPost]
public IActionResult PostModelFromBody([FromBody]Person person)
{
Console.WriteLine($"通过参数接收:str:{JsonConvert.SerializeObject(person)}");
return new JsonResult("调用成功");
}
Post—dynamic动态类型
- JS请求同Post—实体类FromBody
[HttpPost]
public IActionResult PostDynamic([FromBody] dynamic person)
{
string Id=person.Id;
string Name=person.Name;
Console.WriteLine($"通过参数接收:Id:{Id},Name:{Name},str:{JsonConvert.SerializeObject(person)}");
return new JsonResult("调用成功");
}
Post—JObject参数
- JS请求同Post—实体类FromBody
[HttpPost]
public IActionResult PostJObject([FromBody] JObject person)
{
string Id = person["Id"].ToString();
string Name = person["Name"].ToString();
Console.WriteLine($"通过参数接收:Id:{Id},Name:{Name},str:{JsonConvert.SerializeObject(person)}");
return new JsonResult("调用成功");
}
模型绑定官方地址:https://docs.microsoft.com/zh-cn/aspnet/core/mvc/models/model-binding?view=aspnetcore-6.0