asp.net - 如何在 ASP.NET vNext MVC 6 (beta1) 项目之间共享 View ?

标签 asp.net asp.net-mvc razor asp.net-core asp.net-core-mvc

在 MVC5 中,可以使用 Razor Generator ( http://razorgenerator.codeplex.com ) 之类的工具在项目之间共享 View (Razor)。
如何在 vNext 中实现相同的目标?我的 View 无法立即识别(包含 View 的项目在 project.json 中列为依赖项)。
InvalidOperationException: The partial view '~/Views/Authentication/_LogInForm.cshtml' was not found. The following locations were searched: ~/Views/Authentication/_LogInForm.cshtml

最佳答案

我们终于设法解决了这个问题。不过也不是很容易...

  • 您需要将 View 作为资源嵌入到您将依赖的项目中。为此,请添加 "resources": [ "**/*.cshtml" ]到它的 project.json。
  • 您需要创建一个 IFileSystem 来查看这些资源而不是查看磁盘。这是棘手的部分。为了便于理解,我把它放在了 Pastbin 上:http://pastebin.com/aNfq5hNi
  • 您需要在 Startup.cs 中注册此 IFileSystem:
  • //... public void Configure(IApplicationBuilder app,IHostingEnvironment env,ILoggerFactory loggerfactory) { //Enable use of views in other assemblies IOptions<RazorViewEngineOptions> razorViewEngineOptions=app.ApplicationServices.GetService<IOptions<RazorViewEngineOptions>>(); razorViewEngineOptions.Options.FileSystem=new MVCAsset.EmbeddedExpiringFileInfoCache( razorViewEngineOptions, app.ApplicationServices.GetService<ILibraryManager>() ); //... } //...
    注意:这实际上已针对 MVC6 RC1 进行了测试和工作,我没有针对 BETA1 进行测试。

    关于asp.net - 如何在 ASP.NET vNext MVC 6 (beta1) 项目之间共享 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27343387/

    相关文章:

    asp.net-mvc - 如何在 MVC + Umbraco 7 中上传文件

    javascript - 如何手动设置Kendo Grid的总计数?

    c# - 来自数据库的 MVC 5 中的动态货币

    c# - 获取 Controller 名称

    c# - 如何获取字符串的前五个字符

    c# - C# 中的可选参数 - 将用户定义的类默认为 null

    javascript - 在一个 <td> 中强制换行

    asp.net-mvc - 如何从 System.Drawing.Bitmap 类型提供图像(<img> 标记?)

    c# - 如何使模型验证来自不同 Controller 的部分 View ?

    c# - Razor:使用其他应用程序的布局文件