簡體   English   中英

如何為C#MVC項目定義剃刀助手,以便找到命名空間?

[英]How to define razor helper for C# MVC project so that namespace is found?

MVC4,實體框架5,ASP.Net4。我正在嘗試制作一個剃刀助手,以便在多個區域中使用。 已經問過幾次了,但是在Google上實施了所有解決方案后,問題仍然存在。

智能感知正在識別幫助程序,但是在實時服務器上,我無法逃脫編譯錯誤“找不到類型或名稱空間名稱'MyHelpers'(您是否缺少using指令或程序集引用?)”。

這是我所做的:

  • 在/ App_Code中定義的@helper類
  • 在/ Views / Helpers中定義的@helper類
  • 添加了對MyHelper命名空間的引用
    Views / web.config的<system.web.webPages.razor>
  • 在MyArea / Views / web.config的&ltsystem.web.webPages.razor>中添加了對MyHelper命名空間的引用
  • 在Helper定義的頂部添加了所有推薦的using指令
    • @使用System.Web.Mvc;
    • @using System.Web.Mvc.Html;
    • @using System.Web.Mvc.Razor;
    • @using System.Text.RegularExpressions

每一步驟之后,請清理,構建,重新啟動Visual Studio,然后重新發布。 但是Razor編譯器中仍無法識別輔助名稱空間。

有人有什么想法嗎?

不要使用視圖助手( @helper語法)。 這些僅在運行時評估,並且即使不是不可能正確測試也很困難。

而是創建一個擴展HtmlHelper的靜態類,如下所示:

public static class HtmlHelperExtensions
{
    public static IHtmlString Sample(this HtmlHelper htmlHelper)
    {
        ...
    }
}

如果取消命名空間聲明,它將變為全局聲明,您可以從任何地方(包括視圖)進行引用。 對於大多數事情來說,這是一個壞主意,但是對於擴展來說,這很好,除非您遇到使用具有相同方法名稱的相似擴展的庫的問題。 如果選擇命名空間是安全的,則只需像以前一樣將命名空間添加到視圖目錄的Web.config中即可。

我個人不喜歡在過去為網站項目設計的App_Code文件夾中添加類。

如果您的解決方案僅包含一個MVC項目,則只需在MVC項目內部創建一個名為Helpers的文件夾,然后將helpers類放入其中。

僅供參考: 如果您正在開發大型應用程序,則需要考慮為助手類創建一個單獨的類庫項目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM