1

我正在为 MVC 4 入门项目创建项目模板。

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

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

但是我的问题是,对于任何视图文件 (*.cshtml),这些模板通配符根本不会被评估。因此,通配符原始文本不会被替换,而是保留在标记中,这反过来会在运行项目时破坏预处理器逻辑。

视图文件代码的示例。

@model $safeprojectname$.Models.NavigationBarModel

有什么解决方案吗?

4

1 回答 1

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>
于 2013-03-28T20:05:02.263 回答