亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

哪個類負責生成響應?

哪個類負責生成響應?

C#
繁花不似錦 2023-08-13 15:46:28
我是 Razor 引擎的新手,只是有一個關于在 ASP.NET MVC 中生成響應的問題首先我們知道視圖引擎的作用就是將對視圖的請求轉化為ViewEngineResult對象,而Razor視圖引擎實現了IViewEnginepublic interface IViewEngine{   ViewEngineResult FindView(ActionContext context, string viewName, bool isMainPage);   ViewEngineResult GetView(string executingFilePath, string viewPath, bool isMainPage);}在FindVieworGetView方法中,Razor 引擎返回一個ViewEngineResult對象:// pseudo code for simplificationif view_found    return ViewEngineResult.Found(viewName, new RazorView(...));實現為RazorView:IViewpublic class RazorView : IView{   public string Path { get; }   public virtual Task RenderAsync(ViewContext context);}函數RenderAsync似乎是產生響應的人。但是 .cshtml 文件也會被 Razor 引擎編譯成 C# 類,下面是生成 index.cshtml 的 C# 代碼的示例:public class ASPV_Views_Home_Index_cshtml : RazorPage<string[]> {   ...   public override async Task ExecuteAsync() {      ...//this method also seems to generate response   }}所以ExecuteAsync似乎也產生了反應最后,如果我們查看ViewResult操作方法返回的對象,則ViewResult實現ActionResult(implements IActionResult) 為public class ViewResult : ActionResult{  ...  public override Task ExecuteResultAsync(ActionContext context); }ExecuteResultAsync似乎也產生了反應。所以我們有三個候選人1-RazorView.RenderAsync()2-RazorPage.ExecuteAsync()3-ViewResult.ExecuteResultAsync()哪一個是真正產生響應的?
查看完整描述

1 回答

?
白衣染霜花

TA貢獻1796條經驗 獲得超10個贊

ExecuteResultAsync根據結果的類型(ViewResultPageResult、ContentResult、JsonResult等)進行不同的處理。對于ViewResult,其主要職責是設置HttpResponse對象屬性(StatusCode、ContentType、Body等)。

內部ExecuteResultAsync調用RenderAsync負責渲染視圖及其布局。

再次,內部RenderAsync調用ExecuteAsync.?ExecuteAsyncrazor 語法的實際渲染是什么。

您可以下載 .NET Core 存儲庫AspNetCore并檢查所有內容如何在命名空間下連接的詳細信息Microsoft.AspNetCore.Mvc。


查看完整回答
反對 回復 2023-08-13
  • 1 回答
  • 0 關注
  • 130 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號