我们正在开发3个asp mvc应用程序,所有这些都需要一些相同的共享编辑器&显示模板视图。而不是在所有3个项目中复制/粘贴这些项目,是否有可能以某种方式将它们放入共享组件并在所有应用程序中以某种方式引用它们?有什么方法可以在asp mvc应用程序中重新使用编辑器和显示模板?
3
A
回答
1
如果您想从视图文件夹以外的位置进行查看,则需要创建自己的ViewEngine
。
public class CustomViewEngine : WebFormViewEngine {
public CustomViewEngine() : base() {
MasterLocationFormats = new[] {
"/YourFolder/{1}/{0}.master",
"/YourFolder/Shared/{0}.master"
};
ViewLocationFormats = new[] {
"/YourFolder/{1}/{0}.aspx",
"/YourFolder/{1}/{0}.ascx",
"/YourFolder/Shared/{0}.aspx",
"/YourFolder/Shared/{0}.ascx"
};
PartialViewLocationFormats = ViewLocationFormats;
}
//Override the FindView method to implement your own logic
public override ViewEngineResult FindView(
ControllerContext controllerContext, string viewName,
string masterName, bool useCache)
return base.FindView(controllerContext, viewName, masterName, useCache);
}
}
然后注册您ViewEngine
在Global.asax
:
protected void Application_Start() {
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new CustomViewEngine());
}
此外,this post可能会有所帮助。 (太糟糕了底部的下载链接被打破,虽然)
编辑:看来这个解决方案将在实践中行不通,因为ASP.NET将不允许从应用程序的目录之外加载的内容(见Eilon的评论)。
但上面的链接,在DB中存储视图,仍然可能有所帮助。
0
要共享多个ASP.NET应用程序之间的用户控件(或几乎任何内容),可以使用的伎俩在这里列出:http://aspadvice.com/blogs/ssmith/archive/2006/10/05/Tip_3A00_-Share-User-Controls-Between-Applications-in-ASP.NET.aspx
的基本思想是将ASCX文件的文件夹中,使该文件夹中到其他应用程序的虚拟文件夹(您可以有多个虚拟文件夹指向同一物理文件夹)。
1
我不知道如何完成,但必须有一种方法来编译DLL中的页面并共享库。
但是,如果你能负担得起使用自定义视图引擎和另一个模板系统(例如StringTemplate的),那么你可以,如果你是共享库共享访问量:
- 创建一个类库项目
- 照常创建您的模板并将它们标记为“嵌入式资源”。这将确保它们将被放入库DLL中编写自定义视图引擎以从程序集(DLL)中提取模板。一个良好的开端可能会被编辑/分叉现有:http://code.google.com/p/string-template-view-engine-mvc/source/browse/trunk/StringTemplateViewEngine/StringTemplateViewEngine.cs
- 然后在你的ASP.NET MVC项目
相关问题
- 1. 不使用编辑器模板的Asp MVC可重用控件
- 2. 应用程序不显示我的编辑器/显示模板?
- 3. 有没有什么办法可以在ASP.NET MVC3中用Dictionary <K,V>来编辑和显示模板?
- 4. 在MVC中可以重写编辑器模板
- 5. 重用MVC PartialView行动PartialViewResult编辑/显示模板
- 6. ASP.NET MVC 3 - 部分vs显示模板与编辑器模板
- 7. “MVC”和“单页应用程序”模板有什么区别?
- 8. 在asp mvc + angular应用程序中不显示角度组件模板
- 9. Asp.net MVC不显示模板编辑
- 10. 有什么方法可以用googleDocs编辑器编辑我的文档吗?
- 11. 我可以在.NET应用程序中使用Visual Studio模型编辑器吗?
- 12. 切换新的mvc应用程序模板以使用mysql
- 13. asp.net的MVC:使用模板编辑器更新对象,
- 14. 有什么方法可以在黑莓Java应用程序中使用Google Analytics?
- 15. 在asp.net中级联编辑器模板的最佳方法mvc
- 16. 有什么方法可以在Django模板中重复使用模板标签值吗?
- 17. ASP .Net MVC Web应用程序集成引导程序模板
- 18. 使用MVC和Razor创建object.cshtml编辑器模板
- 19. 我应该使用什么可编辑控件来在vb.net应用程序中显示我的电子表格?
- 20. MvcContrib网格和显示/编辑模板
- 21. 人们如何使用编辑器/显示模板与Html Helpers?
- 22. 在使用同步操作方法使用Asp Net Web Api的Asp Net MVC应用程序中使用异步操作方法有什么好处?
- 23. 有没有什么方法可以在Java应用程序中使用HTML和CSS用于我的UI?
- 24. ASP.NET MVC 2编辑器模板
- 25. 在asp.net mvc 2编辑器模板中使用jquery
- 26. 在MVC编辑器模板中使用Dropzone.js
- 27. 以可编程方式显示可编辑UIWebView中的键盘
- 28. 使用编辑器模板显示多个表格
- 29. 使用编辑器模板进行变化显示
- 30. 有什么方法可以使用Eclipse调试Web应用程序?
这在手不解决问题注册您的视图引擎。它仍然不会从其他应用程序(或从应用程序之外的任何文件夹)加载用户控件。 – Eilon 2010-01-05 01:30:20
@Eilon,你是不是指用户控件共享视图? – 2010-01-05 01:55:05
我的意思是说你的解决方案只允许你将用户控件放在* same *应用程序中的其他文件中。原始问题要求*多个*应用程序共享相同的用户控件的能力。 – Eilon 2010-01-05 02:42:35