Adding a prefix to the generated class names

Dec 18, 2012 at 3:57 AM

Hi,

If your project has lots of views and lots of HTML helpers, the name clashes start to pile up.

Is it possible to use the directive file to assign a prefix for the class name that will be generated?

Alternatively,

Would it be possible to use unique, guid-like names for the view class names (NOT the helpers)

I was also wondering: I am using my own view engine, will this clash with the ViewEngine that is automatically added to the view engines collection?

Thanks 

Coordinator
Dec 18, 2012 at 10:23 PM

The generated classes are placed in a namespace that matches the folder structure, so having foo.cshtml in multiple folders should not cause conflicts, no matter how many views you have.

Using random names would not work well as it would change each time you generate the code, causing unwanted source control diffs (since they're normally committed).

No view engine is added automatically. This is done via explicit code in your App_Start\RazorGeneratorMvcStart.cs, which you can control whatever way you want (e.g. re-order, ...).

Dec 19, 2012 at 6:17 PM

You are right about the namespaces; the classes are in different namespaces but when the classes are used in the generated code, the namespaces are not included.

Coordinator
Dec 19, 2012 at 6:27 PM

Not quite following you here. It might be helpful if you share a sample repro (e.g. on Github) that demonstrates the problem.

Dec 19, 2012 at 9:15 PM

Hi David,

This is the code fragment from the generated.cs

 

#line 121 "..\..\Views\Shared\_ContentSectionEdit.cshtml"
Write(
Info.EntityDDL(this,"_AppGroup.Content","Id","Id",""));

 

The problem is that there's a helper called Info

[System.CodeDom.Compiler.GeneratedCodeAttribute(

"RazorGenerator", "1.5.0.0" )]
public static class Info : TECHIS.EndApps.Web.MvcHelperPage

And, a View also called Info:

[System.Web.WebPages.
PageVirtualPathAttribute("~/Views/Shared/Info.cshtml")]
public class Info : System.Web.Mvc.WebViewPage<ExtendedModel>

 

  When a view using the helper is generated, the Info view then takes naming precedence, leading to a compile error.