记录ActionResult返回值的可接受方式

时间:2013-12-22 23:25:53

标签: c# asp.net-mvc documentation

我在控制器中有以下操作方法:

/// <summary>
/// Redirects the user to the Dashboard for their default role.
/// </summary>
/// <returns>???</returns>
public ActionResult Dashboard()
{
    return RedirectToAction("Index", "Dashboard", new { area = ((User)User).Roles[0].Name });
}

记录执行重定向(或类似操作)的控制器操作的返回值的常用或可接受的方法是什么?

2 个答案:

答案 0 :(得分:0)

作为参考,我在对象浏览器中打开了一个.NET Framework DLL并查看了方法签名。如果该方法返回了一些值,通常会填写<returns> XML注释。随意使用它作为指导。

如果您必须处理非常严格的代码分析或StyleCop独裁者,我建议如下:

/// <returns>Returns a redirect to an action.</returns>

否则,规范似乎是放弃“返回”这个词并使用类似的东西:

/// <returns>A redirect to an action.</returns>

在任何一种情况下,returns标记中的文本通常是返回的对象类型的逐字符串。

答案 1 :(得分:0)

使用ProducesResponseType属性。虽然只有.NET Core,但例如是2020年。

[ProducesResponseType(StatusCodes.Status308PermanentRedirect)]
public ActionResult Dashboard()
{
    return RedirectToAction("Index", "Dashboard", new { area = ((User)User).Roles[0].Name });
}

添加此属性的更全面的方法是

[HttpGet]
[ProducesResponseType(typeof(FooDto), StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
public Task<IActionResult> GetFoo()
{
  // ...
}

并且自从ASP.NET Core 2.1开始,我们有了ActionResult<T>,因此,幸福的路径在属性中的详细程度可以降低,并且在编译阶段还可以进行类型检查。

[HttpGet]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
public Task<ActionResult<FooDto>> GetFoo()
{
  // ...
}