以其中Views_Home_Index为例,其实际上为RazorPage<TModel>的一个实现类。
它内部的ExecuteAsync方法正是生成页面内容的关键。
因为是VS模板自动生成的页面,上面的代码十分冗杂。为了更清晰地检查核心的代码,不妨减少下页面的复杂度。
把index.cshtml文件内容改成如下:
@{ ViewData["Title"] = "Home Page"; Layout = null; } <p>Hello World!</p>再次编译后,可以看到ExecuteAsync方法的内容变成了下面的样子:
public virtual async Task ExecuteAsync() { ((ViewDataDictionary) this.get_ViewData()).set_Item("Title", (object) "Home Page"); ((RazorPageBase) this).set_Layout((string) null); ((RazorPageBase) this).BeginContext(65, 21, true); ((RazorPageBase) this).WriteLiteral("\r\n<p>Hello World!</p>"); ((RazorPageBase) this).EndContext(); }不难看出,最终展现的页面内容便是通过RazorPageBase类的WriteLiteral方法生成的。