Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET MVC locating cs files generated from cshtml?

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!

like image 840
Manolo Avatar asked Nov 02 '12 14:11

Manolo


2 Answers

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> 
like image 182
Simon_Weaver Avatar answered Sep 24 '22 01:09

Simon_Weaver


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.

like image 28
barry Avatar answered Sep 23 '22 01:09

barry