ActionResult参数含义

时间:2017-03-05 22:53:40

标签: asp.net-core asp.net-core-mvc

ControllerBase类包含许多方法,例如CreatedCreatedAtAction,需要value参数。

[NonAction]
public virtual CreatedAtActionResult CreatedAtAction(string actionName,
            string controllerName,
            object routeValues,
            object value)
{
            return new CreatedAtActionResult(actionName, controllerName, routeValues, value);
}

上面的文件(真的很差)说:

  

要在实体主体中格式化的值。

我不明白参数代表什么?它实际上既不在CreatedAtActionResult类本身中使用,也不在基类中使用。此外,没有方法重载允许不使用它。

1 个答案:

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