ASP.NET MVC3 - 在库项目中分发EditorTemplate?

时间:2011-03-04 09:48:10

标签: asp.net-mvc

是否可以将EditorTemplate控件ASCX与库项目中的类型一起分发,并在使用EditorFor()方法呈现类型时由MVC3使用它?


我工作的地方有很多DateTimeGender和一些自定义字段,这些字段具有特定但一致的(HTML)输入方式和相应的后备ViewModel类型(即DateTimeViewModel具有单独的月,日,年字段等)并且它们位于共享库项目中。

但是我们仍然需要将这些类型的EditorTemplates复制到每个不太干的项目中。

那么有没有办法将这样的EditorTemplate与库项目捆绑在一起,并确保在使用相应的ViewModel时使用它而不必将所有EditorTemplate复制到每个项目中?

4 个答案:

答案 0 :(得分:2)

您需要一个自定义的VirtualPathProvider来实现这一目标,但没有任何开箱即用的功能。这是blog post您可以查看的内容。

免责声明:自定义VirtualPathProviders不适用于预编译的Web应用程序。因此,如果您打算在发货之前预编译Web应用程序,请不要使用虚拟路径提供程序。

由于个人限制,我使用自定义NuGet packages,允许开发人员将所有必要的模板提取到相应的位置。

答案 1 :(得分:1)

您可以创建自己的VS模板,将其导出并分发给我认为的所有开发人员。

Write Templates for VS2010

答案 2 :(得分:1)

您可以注册自己的VirutalPathProvider实现:

HostingEnvironment.RegisterVirtualPathProvider(new YourViewProvider());

然后,您将能够从任何地方(例如从嵌入式资源)获取文件。

希望这有帮助。

答案 3 :(得分:0)

我认为现在不可能。 ASP.NET MVC编辑器模板应该在部分视图文件中定义。没有办法只在代码中定义它们。