我想使用ASP.NET MVC 3和剃刀視圖的可移植視圖,因爲這似乎是創建一個簡單的插件架構的最佳方式。所以我有我的類庫設置,我有我的視圖位於/Views/Admin/Index.cshtml,它被設置爲嵌入式資源。然後,我將該項目作爲主Web應用程序項目的依賴項。當我嘗試訪問管理控制器時,索引操作我收到一條消息,該消息找不到該視圖文件(因此控制器已正確包含在內)。我假設它正在嘗試查看主Web應用程序項目而不是便攜式區域二進制文件。有沒有辦法讓剃鬚刀視圖與便攜式區域一起工作?ASP.NET MVC 3,Razor視圖和可移植區域
回答
您是否確定在便攜式區域中將視圖標記爲嵌入式資源?
另外我發現可移植區域的一個很好的特性是你可以覆蓋嵌入式視圖,所以如果你在你的主機應用中放置一個具有不同代碼邏輯的嵌入式相同名稱和位置的視圖,它將優先於嵌入式一個尼斯!
希望這有助於
一直奮鬥在這個具體問題了一段時間,但我想我終於想通了。
文件夾結構以及如何在您的項目中調用名稱空間對於使其正常工作非常重要!
我有一個便攜式區某這裏嵌入式剃刀意見工作的例子:
看看該項目的結構。
該區域的名稱是UserAdministration
,項目根目錄中有一個UserAdministrationRegistration
類,該類位於UserAdministration
名稱空間中。 然後有Controllers
,Models
和Views
文件夾(就像一個正常的MVC項目),並在Views
文件夾下,還有一個UserAdministration
文件夾,其中包含該區域的視圖。
還有一些對嵌入視圖非常重要的工作:您必須在文件的Application_Start
方法中註冊一個新的視圖引擎,您是否這樣做?
PortableAreaRegistration.RegisterEmbeddedViewEngine();
而且......在你的註冊類,請確保您覆蓋RegisterArea
方法,該方法需要兩個參數(AreaRegistrationContext context
和IApplicationBus bus
),並調用基實現在那裏:
public override void RegisterArea(AreaRegistrationContext context,
IApplicationBus bus)
{
base.RegisterArea(context, bus); // <== very important!
context.MapRoute(
"UserAdministration",
AreaName + "/{controller}/{action}/{id}",
new { controller = "UserAdministration", action = "Index",
id = UrlParameter.Optional }
);
}
如果您不要致電基地執行,您必須至少添加一個
RegisterAreaEmbeddedResources();
爲了確保您的嵌入視圖和資源已註冊。
感謝這個答案,正是我所期待的。我仍然看到沒有被發現的錯誤。它被設置爲嵌入式,但仍然沒有。 – Pieter 2011-08-08 20:53:44
我不得不在我的網站中添加一個nuget包引用到EmbeddedResourceVirtualPathProvider以使其工作。 – Pieter 2011-10-03 20:29:01
這看起來和我的相同。它可以在我的開發機器上正常工作,但實際上並沒有在部署後查找寫入視圖文件。我記錄了它所查找的視圖,並完全跳過了.cshtml文件,儘管它找到了_layout和_viewstart的視圖。 – 2011-12-14 23:44:22
我按照在Fretje的回答說明瞭這個工作,然後還會在您的網站上添加NuGet包參考EmbeddedResourceVirtualPathProvider。
只是參考?你做了什麼來連接它? – 2011-12-14 23:42:28
在Visual Studio中,右鍵單擊解決方案資源管理器中的引用,然後選擇「添加庫包引用」。在彈出窗口中選擇「在線」並搜索「EmbeddedResourceVirtualPathProvider」,然後單擊安裝。請注意,您需要將更新到Service Pack 1的VS2010作爲Nuget包安裝程序的一部分。 – Pieter 2011-12-16 16:08:52
- 1. 將ASP.NET移植到MVC 3 Razor
- 2. ASP.NET MVC 3 Razor視圖限制
- 3. ASP.Net MVC 4區域和視圖配置
- 4. ASP.NET MVC 3 Razor輸出緩衝區視圖?
- 5. ASP.NET MVC 3 RenderPartial/Razor和iframe
- 6. 特定可移植區域的ControllerFactory
- 7. JavaScript和MVC 3 Razor視圖引擎
- 8. ASP.NET MVC 3區域和DDD聚合根
- 9. 可移植區域中的視圖中的斷點在調試時未命中
- 10. Master-Detail使用Razor,ASP.NET MVC 3和.NET 4.0創建視圖
- 11. ASP.NET MVC 3與Razor和Spark視圖引擎並列
- 12. 將asp.Net MVC視圖移植到angularJS 2視圖/組件
- 13. Webforms移植到Razor MVC錯誤
- 14. ASP.Net MVC 3 Razor Response.Write position
- 15. ASP.NET MVC 3 RAZOR風格
- 16. ASP.net MVC 3 Razor - jQuery Intellisense
- 17. Asp.Net MVC中的可移植模塊4
- 18. ASP .NET MVC 3周+ Razor視圖+元素
- 19. MVC 3 Razor視圖引擎格式
- 20. ASP.NET MVC 3 Razor部分視圖,但指定佈局的「深度」
- 21. asp.net mvc 3 razor一個視圖中的兩個控制器
- 22. ASP.NET MVC 3 Razor:將數據從視圖傳遞到控制器
- 23. ASP.NET MVC路由和區域
- 24. ASP.NET MVC區域 - ActionLink和RedirectToAction
- 25. 在ASP.NET核心MVC Razor視圖
- 26. MVC 3區域註冊和視圖不起作用
- 27. ASP.Net中的多項目區域MVC 3
- 28. ASP.NET MVC 3 - 區域不工作
- 29. ASP.NET MVC 3個區域,並在web.config中
- 30. 模型在asp.net mvc 3個區域
我想這取決於註冊視圖引擎的順序,如果嵌入視圖引擎是第一個便攜式區域視圖將覆蓋根項目中的常規視圖。作爲一個便箋,我會說你可以通過清除所有的視圖引擎來獲得小的性能增益,並確保你只註冊了你在項目中使用的引擎。見http://insightpassion.com/norbertraus/index.php/2011/04/29/razor-views-performance/ – JohannesH 2011-09-27 21:01:05