asp,net core 3.1 的 Controller 和 Action


對於 MVC 視圖應用而言,Action 返回的結果通常是一個 View,即頁面;

而對於 Web API 應用程序來說,則返回相應的資源或者 HTTP 狀態碼

Controller

根據約定,繼承自位於 Microsoft.AspNetCore.Mvc 命名空間下的 Controller 類,而這個 Controller 類又繼承自 ControllerBase 抽象類。

如果一個類並不滿足上述約定,那么只要為它添加[Controller]特性,仍然能夠將它作為 Controller 處理;反之,如果為一個 Controller 添加[NotController]特性。

[Controller]
public class Blogs
{
}

[NonController]
public class ValueController
{
}

Action

每個 Action 都應返回 IActionResult 類型或ActionResult<T> 類型的值作為 HTTP 請求的結果。

常見的類別,包括

  1. 狀態碼
  2. 對象的狀態碼
  3. 重定向
  4. 內容

狀態碼

返回一個 HTTP 狀態碼給客戶端

對應的狀態碼 描述 ControllerBase中的方法
200 操作成功 Ok()
400 錯誤的請求 BadRequest()
204 操作成功,但未返回任何內容 NoContent()
404 請求的資源找不到 NotFound()
401 未授權 Unauthorized()
415 無法處理請求附帶的媒體格式

如果要返回上述狀態碼之外的結果,則可以使用 StatusCode 方法,並為該方法指明具體的狀態碼。

return StatusCode(403);

直接使用狀態碼數字有可能會出錯,更簡單且直觀的方法是,使用Microsoft.AspNetCore.Http 命名空間下的 StatusCodes 靜態類

return StatusCode(Microsoft.AspNetCore.Http.StatusCodes.Status200OK);

對象的狀態碼

這一類結果繼承自 ObjectResult,包括 OkObjectResultCreatedResultNotFoundObjectResult 等。

public IActionResult DoSomething()
{
		var result = new OkObjectResult(new { message = "success", currentDate = DateTime.Now});
		return result;
}

重定向

包括 RedirectResultLocalRedirectResultRedirectToActionResultRedirectToRouteResult 等。

// 重定向到指定的URL
return Redirect("http://www.asp.net/");
// 重定向到當前應用程序中的另一個URL
return LocalRedirect("/account/login");
// 重定向到指定的Action
return RedirectToAction("login");
// 重定向到指定的路由
return RedirectToRoute("default", new { action = "login", controller = "Login" });

內容

包括 ViewResult、PartialViewResult、JsonResult 和 ContentResult 等,其中 ViewResultPartialViewResult 在 MVC 視圖應用中非常常見,用於返回相應的頁面;JsonResult 用於返回JSON 字符串,ContentResult 用於返回一個字符串。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM