ControllerBase类包含许多方法,例如Created
或CreatedAtAction
,需要value
参数。
[NonAction]
public virtual CreatedAtActionResult CreatedAtAction(string actionName,
string controllerName,
object routeValues,
object value)
{
return new CreatedAtActionResult(actionName, controllerName, routeValues, value);
}
上面的文件(真的很差)说:
要在实体主体中格式化的值。
我不明白参数代表什么?它实际上既不在CreatedAtActionResult类本身中使用,也不在基类中使用。此外,没有方法重载允许不使用它。
答案 0 :(得分:4)
该值是您要作为响应返回的新对象,与您传递给Ok(value)
的对象相同。
如果您只想回发新资源网址,则可以传递null
。如果您的java脚本想要直接使用它,请发布它的值。
[HttpGet]
public IActionResult GetUser(int id)
{
var user = context.Users.SingleOrDefault(id);
if(user==null)
return NotFound();
return Ok(user);
}
[HttpPost]
public IActionResult CreateUser(UserViewModel user)
{
var newUser = new User { /* assign values */ };
context.Users.Add(newUser);
context.SaveChanges();
return CreatedAtAction(nameof(GetUser), nameof(UserController), new { id = newUser.Id }, newUser);
}
这将返回带有newUser
的json响应并创建一个标题,其中url指向" http://example.com/user/5"或者新创建的用户的id是什么。
如果您不希望返回json回复,请传递null
。