ASP.NET MVC locating cs files generated from cshtml?

风流意气都作罢 提交于 2020-07-05 02:46:08

问题


So I've recently started with ASP.NET MVC 4. I'm using the razor engine. My question is concerning the view files, with suffix cshtml. It seems to me that these are precompiled into *.cs files by razor which in turn are then compiled into MSIL. (A pattern that is familiar from my days as a JSP developer.) One reason why I am making this assumption is that if I enter some invalid c# code into the cshtml file I get a compilation error displayed like this:

Line 34: public class _Page_Views_BaseDataAdmin_Index_cshtml : ...

And line 34 is not indicative of where the error is in the cshtml file, just as the class _Page_Views_BaseDataAdmin_Index_cshtml seems to refer to a regular .net class not the view file.

So my question is: Where do I find the cs file? Specifically, in the example above, "_Page_Views_BaseDataAdmin_Index_cshtml.cs"? Maybe I need to add some config to tell MVC to keep this .cs file on disk, if so, how do I do this?

Thanks!


回答1:


You can find the compiled views in your Temporary ASP.NET Files folder.

First find the .compiled file that corresponds to your view (ex: home.cshtml): home.cshtml.a8d08dba.compiled

This file contains the assembly name: assembly="App_Web_hkc53urb"

Your .cs file will be the assembly name concatenated with a number: App_Web_hkc53urb.1.cs

An easier approach might be to use Windows search for your view name in the temp ASP.NET directory.




回答2:


A quick tip to find the generated files is to add this to your .cshtml file.

This will show you immediately the full path

<div>This file is compiled to  @this.GetType().Assembly.CodeBase</div> 


来源:https://stackoverflow.com/questions/13197525/asp-net-mvc-locating-cs-files-generated-from-cshtml

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!