在View(.cshtml)文件中忽略Visual Studio项目模板通配符

时间:2013-03-19 22:58:13

标签: asp.net-mvc visual-studio project-template

我正在为MVC 4初学者项目创建项目模板。

在任何基于普通类的代码文件中,我可以为visual studio编写以下语法,以便在创建新项目时使用用户最初提供的项目名称填充此$safeprojectname$通配符。

namespace $safeprojectname$.Models
{
    public class Class1
    {     
        public bool blah { get; set; }
    }
} 

然而我的问题是,对于任何视图文件(* .cshtml),这些模板通配符根本不会被评估。因此,通配符原始文本不会被替换,而是会持久存储到标记中,而标记又会在运行项目时轰炸预处理程序逻辑。

视图文件代码的示例。

@model $safeprojectname$.Models.NavigationBarModel

对此有什么解决方案吗?

1 个答案:

答案 0 :(得分:1)

我最终想到了这一点以及其他一些问题。

生成的.vstemplate文件会为导出的模板中包含的每个资源创建一个<ProjectItem>元素。

对于视图,ReplaceParameters属性需要手动设置为true,默认设置为false。

<Folder Name="Shared" TargetFolderName="Shared">
  <ProjectItem ReplaceParameters="true" TargetFileName="_Layout.cshtml">_Layout.cshtml</ProjectItem>
  <ProjectItem ReplaceParameters="true" TargetFileName="_LoginPartial.cshtml">_LoginPartial.cshtml</ProjectItem>
  <ProjectItem ReplaceParameters="true" TargetFileName="_NavigationBar.cshtml">_NavigationBar.cshtml</ProjectItem>
  <ProjectItem ReplaceParameters="true" TargetFileName="Error.cshtml">Error.cshtml</ProjectItem>
</Folder>