Asp.net MVC:Controller类中无方法体的非抽象View()方法如何实现?
为什么ASP.NET MVC中Controller的非抽象View()方法没有方法体?
你看到的并不是方法的完整实现,只是类库程序集的元数据签名。
具体原因如下:
- System.Web.Mvc是编译好的.NET类库(以.dll文件形式存在),当你在Visual Studio中按F12查看Controller类的View()方法时,IDE会从程序集的元数据里提取方法签名展示给你,而非显示实际的源代码实现。
- 非抽象方法必须有方法体,但这个方法体是存在于类库的编译代码中,你看到的
protected internal ViewResult View();只是方法的对外公开签名,没有包含实现逻辑。 - 举个实际的实现逻辑例子:View()方法的真实代码会创建并返回一个ViewResult对象,内部会处理视图名称、模型数据、视图引擎选择等逻辑,这些代码都封装在System.Web.Mvc.dll里。
如果想查看完整的方法实现,可以使用反编译工具(如ILSpy、dotPeek)打开对应的类库文件,就能看到具体的代码逻辑。
内容的提问来源于stack exchange,提问作者RezA
相关产品推荐
相关产品推荐

