问题标签 [razorgenerator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1375 浏览

asp.net - MVC4 托管来自其他 MVC 项目的视图

我试图弄清楚如何托管在不同解决方案下构建的 MVC4 应用程序。在 SO 和 Web 上有很多使用带有 Areas 的 RazorGenerator nuget 包执行此操作的示例 - 它工作得非常好。在我的情况下,我想避免使用区域 - 我公司开发的每个应用程序都将在它自己的 MVC4 项目中(然后共同在同一个解决方案中)。

我已将 RazorGenerator 集成到我的应用程序中,代码生成按预期工作。但是,我的主机解决方案无法在其默认位置找到视图。例如,我在一个名为 MyAccount/Index 的应用程序中内置了一个控制器/视图。

控制器:

查看(从 RazorGenerator 生成):

我知道默认情况下,ViewEngines 会尝试在默认位置(视图和共享)中找到这个视图,所以我将自己的 ViewEngine 添加到 Engines 集合中:

MyViewEngine.cs:

但是,仍然找不到该视图:

也许我误解了视图的位置 - 我原以为它会在 Accounts/Views/MyAccount/ 中找到。有什么想法我可能做错了吗?

谢谢!

0 投票
2 回答
179 浏览

c# - Web 管理面板作为独立程序集

现在我正在研究基于 MVC 的 Web 分析系统。在开发过程中,我想到了提取 Web 管理面板以分离程序集。它用于我的其他项目。因此,将来我可以只引用该程序集,而不关心布局 Web 面板。

Web 面板本身只是具有一些紧凑设计的元素的标记。它包含主菜单、子菜单和填充所需其他元素的位置。

目前,我使用 RazorGenerator 在此类面板中获得了包含所有视图的程序集。

问题是如何管理此类程序集的 css 文件?我应该将它们内联到视图并将该视图放置到已编译的程序集中还是将它们部署为带有程序集的单独 css 文件?

该 css 包将被压缩/最小化或以任何方式组合到最终项目中。

0 投票
1 回答
1293 浏览

c# - 如何使用 RazorGenerator 而不是 T4 来生成 C# 文件?

我想使用http://razorgenerator.codeplex.com/而不是 Visual Studio 的 T4 功能来根据我的解决方案的代码模型自动生成 C# 文件/类。我已经使用 EnvDTE 和 T4 成功地完成了这项工作,但是,我想使用比 T4 更易于维护和更好支持的东西。

我尝试使用模板生成器 via @* Generator: Template *@,但它的输出是 C# 类,其Execute函数将生成我需要的模板化 c# 类。如何将 C# 输出直接输入到我的解决方案中?

0 投票
1 回答
411 浏览

asp.net-mvc-3 - 可以在 MVC3 应用的 _ViewStart.cshtml 中指定 _Layout 和局部视图吗?

我有一套包含多个 MVC3 Web 应用程序的套件,所有这些应用程序都引用了一个通用的 Core.dll。我使用 RazorGenerator 编译了公共视图,订阅站点从预编译的 .dll 中找到相关视图没有任何问题。

我正在尝试对布局页面执行相同的操作,因为这在所有站点中也很常见,除了特定于该特定站点的一两个 div。这也可以正常工作,只要这样做就可以提供 _layout 视图:

但是,要在布局中填充特定站点的 div,我希望在特定站点中有一个部分视图,并使用 JQuery 在 _layout 中设置占位符 div 的 HTML。就像是:

我已经尝试过了,但 _ViewStart 不会在每个帖子上重新触发。这可能使用不同的方法吗?

0 投票
0 回答
2303 浏览

c# - RazorGenerator PrecompiledMvc​​Engine 无法跨程序集定位部分视图或编辑器模板

我有一个大型 MVC 4 站点,每个 MVC 区域分为一个项目。我们使用 RazorGenerator 将我们所有的视图预编译到项目程序集中以进行部署,并将PrecompiledMvcEngine.ViewEngine

我刚刚创建了一个新区域,我想共享Shared来自另一个程序集的视图,但是InvalidOperationException当我试图定位一个局部视图时,我得到一个显示模板或编辑器模板似乎也找不到。

我相信它类似于这个问题中描述的问题

我在 RazorGenerator App_Start 中的代码是这样的:

当我在 Area2 之类的视图中遇到部分引用时@Html.Partial("Partials/Footer"),我得到了异常。看来 Razor 正在寻找正确的路径

查看 的源代码PrecompiledMvcEngine,它似乎只在程序集中查找视图。

我最初认为视图系统在尝试解析路径时会查看所有已注册的 ViewEngines,但这似乎是一个不正确的假设(我可以理解为什么不这样做)。

有没有办法在多个程序集中共享视图?

更新

我通过创建一个自定义版本来解决这个问题,该版本PrecompiledMvcEngine在其构造函数中采用程序集列表。核心变化是这样的:

这种方法有更好的选择或陷阱吗?

0 投票
2 回答
1461 浏览

c# - 外部剃须刀视图看不到外部模型

我对外部剃刀视图有疑问。在我的项目中,我有主 mvc Web 程序集和动态加载的外部类库程序集(来自 DB),它们有自己的控制器、视图和模型。这些程序集不会在运行时直接引用和加载。

我能够通过为控制器创建一个自定义控制器工厂来使整个系统工作,控制器是视图的自定义虚拟路径提供程序。视图是我的外部程序集中的嵌入资源。

我遇到的问题是,当我使用来自外部程序集的模型类创建强类型外部视图时,无法在运行时编译视图,因为程序集没有传递给剃刀编译器。所以我收到以下错误:

编译器错误消息:CS0234:命名空间“MyNamespace”中不存在类型或命名空间名称“MyPlugin”(您是否缺少程序集引用?)

源错误:

当我使用动态模型、来自我的主 Web 程序集或来自我的 Web 项目中直接引用的程序集的模型类时,它工作正常。我确定在编译外部剃须刀视图之前加载了外部程序集,因为我的控制器工作得很好。

我开始查看 RazorGenerator 项目以预编译我的外部视图,但无法取得任何进展(没有生成任何内容)而且我什至不确定我是否正在寻找正确的方向,因为我的程序集已加载运行时,我必须使用我自己的 ViewEngine 和 ControllerFactory。

0 投票
1 回答
949 浏览

msbuild - MSBuild 找不到已通过 web.config 绑定重定向的 DLL

我有一个 ASP.NET MVC 4 Web 应用程序。我正在使用RazorGenerator.MsBuild构建目标来预编译我的 Razor *.cshtml 文件。当我在本地构建我的项目时,一切都运行良好。

当我将项目部署到 Azure 网站时,我收到此错误:

“C:\DWASFiles\Sites\my-site-name\VirtualDirectory0\site\repository\MyWebProject\MyWebProject.csproj”(构建;pipelinePreDeployCopyAllFilesToOneFolder 目标)(1)->(PrecompileRazorFiles 目标)->
C:\DWASFiles\Sites\my-site-name\VirtualDirectory0\site\repository\packages\RazorGenerator.MsBuild.2.0.1\tools\RazorGenerator.targets(21,9): error : 创建配置节处理程序时出错对于 system.web.webPages.razor/pages:无法加载文件或程序集 'System.Web.WebPages.Razor,Version=2.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35' 或其依赖项之一。该系统找不到指定的文件。(C:\DWASFiles\Sites\my-site-name\VirtualDirectory0\site\repository\MyWebProject\MyWebProject\Views\web.config 第 7 行)[C:\DWASFiles\Sites\my-site-name\VirtualDirectory0\site\存储库\服务器\MyWebProject\MyWebProject\MyWebProject.csproj]

这基本上说它找不到 System.Web.WebPages.Razor 的 2.0.0.0 版本

该消息指向我的 Views\web.config 的第 7 行,这是 configSection.sectionGroup 部分中的标准 MVC 4 行:

通过在我的本地机器上运行Process Monitor,我可以看到它首先在

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\Assemblies\System.Web.WebPages.Razor.dll

然后再做另一个加载图像

C:\MyWebProject\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.Razor.dll

还有另一个加载图像

C:\MyWebProject\packages\RazorGenerator.MsBuild.2.0.1\tools\v2\System.Web.WebPages.Razor.dll

最后是另一个加载图像

C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_2.0.0.0__31bf3856ad364e35\System.Web.WebPages.Razor.dll

来自 GAC。

我怀疑它适用于我的机器而不是 Azure 网站,因为 System.Web.WebPages.Razor 的 2.0.0.0 版本不在 Azure 网站的 GAC 中,但 1.0.0.0 版本在那里。

在我的主 web.config 文件中,我的 runtime.assemblyBinding 部分中有这些行:

通过查看 Process Monitor,看起来 MSBuild 在构建我的 Web 程序集时正在读取我的 web.config 文件,但没有读取任何其他 .config 文件(之前它读取为 ""C:\Windows\Microsoft.NET\Framework\v4.0.30319\ msbuild.exe.config")。因此,我看不到任何其他可以放置这些程序集重定向的地方。

奇怪的是,如果我通过设置禁用 RazorGenerator,该项目将完美部署在 Azure 网站上

显然,禁用此选项后不会发生 Razor Generator 传递,因此结果中没有预编译视图。但是,它仍然运行良好。

因此,这似乎只影响 RazorGenerator“PrecompileRazorFiles”构建目标,并且只在 Azure 网站部署。

如何确保所有构建目标,包括 RazorGenerator 始终使用正确的 DLL?

关于如何调试它的任何其他建议也将不胜感激。

0 投票
3 回答
2338 浏览

asp.net-mvc - 升级 Bootstrap 主题 ASP MVC 站点的挑战,如何升级 bootstrap + 保留以前的 CSS / @Helper / Transpiler

我建立了一个 ASP MVC 站点并使用了 bootstrap、Jquery、knockout 和 signalR,并继承了 3rd 方 MVC 代码与同步融合等控件集成的混合。(这件事我没有选择,公司决定)

在视图中编写 HTML 助手代码后,

我手动应用了所有引导样式,花了一些时间才让它工作。现在,随着对引导程序(RC 3.1)的升级/更改,我发现自己回到了原点,搜索代码并手动替换它,进行了很多更改。您能否分享一个更好的方法来将引导 CSS 类转换/发出/绑定到帮助程序中(即以技术帮助程序的独立方式,无论是它的 ASP HTML MVC 帮助程序、Syncfusion HTML MVC 帮助程序、Rad 还是 FluentBootStrap)

请提供将引导 CSS 应用于 ASP MVC 页面的解决方案/建议

  • 这很容易分离和维护,并且 CSS 升级的程序化
  • 或全局可配置/可设置/适用
  • 我一直认为扩展类可能是一个不错的选择,但不确定如何实现这一点,如果你能告诉我如何获得自定义引导 CSS 绑定,以便我可以以编程方式或全局应用它,
  • 是否有转译器或 Razor Declaritve Helper(我知道 nuget 包,我尝试应用它,结果它更像是一个模板,而不是声明性扩展绑定,我无法将它与其他库 Syncfusion 或 DevExpress 一起使用)

  • 或其他方式,我将不胜感激。

这是我目前使用 Syncfusion 库所做的一个示例

或以下更好的选项 2

http://mvc.syncfusion.com/demos/ui/tools/Menu/Appearance

-> 我手动更改/升级到 BootStrap RC 3.1,我将最后一部分更改为 bootstrap

0 投票
1 回答
10690 浏览

c# - 枚举类型 MVC Razor 的 CheckBoxList

在我的 c#.net MVC 应用程序中,我想显示枚举类型的复选框列表。

我有一个枚举类型

我的模型是

在我看来,我需要两个复选框,一个用于读取,另一个用于编辑所以我尝试了

但这给了我错误“模板只能用于字段访问、属性访问、单维数组索引或单参数自定义索引器表达式。”

我通过向我的模型添加另外两个属性来解决这个问题

然后发表我的看法

我知道我接近它的方式是不正确的,应该有更好的方法来实现这一点。有人可以给我建议吗。

0 投票
0 回答
420 浏览

asp.net-mvc - RazorGenerator.MVC - 程序集未复制到主应用程序 bin 文件夹时无法生成视图

我目前正在使用 RazorGenerator.Mvc,目的是为我的 MVC4 应用程序创建一个模块化框架。我一直在关注通过谷歌找到的几个教程,我的应用程序运行良好。

但是,我有一个问题一直困扰着我。所以,我的解决方案如下所示:

-CoreMVC项目

-MVCM模块A

-MVCM模块B

我管理模块项目以将生成的程序集复制到 CoreMVCProject 的 bin 文件夹中,到目前为止,这没有问题。

但是,当我在 CoreMVCProject 中创建一个插件文件夹时,无法读取模块中的视图,它总是给出错误,说找不到视图。

不过,我还添加了代码以在 Plugins 文件夹中添加程序集,例如:

尽管可以毫无问题地访问和执行模块中的控制器和其他逻辑,但模块中的视图仍然无法读取。

所以,总而言之,问题是如何管理它,即使程序集没有复制到主 MVC 项目的 bin 中,也可以正常读取视图。

有什么建议吗?