1

之間的剃刀聲明幫手比方說,我有2 MVC的Web項目(WEB1和web2)和1個項目包含共享視圖(共同)(using the razorgenerator of David Ebbo
WEB1和web2都有一個test.cshtml文件。兩個test.cshtml文件中的幾個代碼塊完全相同。
我想知道是否有可能在不同項目中的幾個cshtml文件之間共享declarative helper (@helper)。所以把一個cshtml文件放到我的App_Code中並沒有幫助(我需要在每個web項目中有1個,這顯然不是我想要的)。
我知道我可以在我的'common'項目中創建一堆共享的部分視圖,但是創建20個cshtml文件似乎還不錯,每個cshtml文件都包含一小部分html。
我知道我可以創建一個標準的幫助器方法(static string GenerateAPieceOfHtml(this HtmlHelper helper, ....)),但是我忘記了編寫HTML的容易程度,因爲您可以在cshtml文件中執行它。分享多個MVC Web項目

有一段時間我以爲I bumped into an answer that would allow me to do it。但正如我在評論中寫的那樣,這段代碼並沒有爲我編譯。

我希望我的問題是明確的:)

[更新]
作爲csharpsi要求在評論..我也嘗試從其他崗位代碼,但它並沒有吐出任何HTML我。自從我開始認爲這個答案應該可以做到這一點,因爲它有13個贊成票,我決定給它第二次嘗試..
我再次沒有得到任何輸出,但後來我試了一下有點不同。 。和成功!
我想這(不吐頁面上的任何HTML):

@{ new Test().DoSomething(Model); } 

這是不工作的版本:

@{ 
    var html = new Test().DoSomething(Model); 
    @html 
} 

其他版本的作品:

@(new Test().DoSomething(Model)) 

我該怎麼處理這個問題?刪除它?自己寫一個答案?

+0

您是否嘗試了其他帖子的代碼而未聲明HelperResult爲靜態? – simonlchilds

+0

我會說:回答你自己,引用用戶,讓你在正確的軌道與他/她的評論 – superjos

回答

0

你爲什麼試圖用剃刀助手呢?剃刀助手是一個特殊的視圖引擎,你的應用程序不應該依賴它們在許多地方(甚至在不同的網站之間)。在這種情況下,一定要使用標準的MVC方式 - HTML助手。您可以輕鬆地在網站之間共享這些內容,例如,您可以讓自己的課程庫充滿它們。

+0

正如我在我的問題中寫道:我知道我可以使用標準的HTML幫手。 我的確認爲使用剃刀語法的可能性要容易得多,然後在輔助方法中連接一串字符串。 所以我真的不認爲這是我的問題的答案,因爲你沒有回答我的問題(是否有可能...),你寫我應該使用一種我知道可能的方式,並希望以避免:) – TweeZz

+0

我沒有試圖回答你的問題,我試圖說服你,你「做錯了」:)你正在將共享邏輯的一部分轉移到特定於引擎的sytax糖。想象一下,你會做到這一點,廣泛使用,然後你的笨老闆來說,「哦,我討厭那個剃刀,立即將它切換到webforms/spark /任何引擎」 - 如果你只使用推薦的MVC的東西,你可以做它在一分鐘內(即使與轉換工具),但與你的黑客你擰了...看到我的觀點?不要打破慣例 - 你遲早會把狗屎帶給你:) – rouen

+0

Sry,沒有進攻,但沒有,我沒有看到你的觀點。我的老闆不知道剃刀,網頁,火花......是。我的老闆需要看到結果,他不關心我們使用哪個視圖引擎。我甚至不確定他是否應該關心。 「共享邏輯」?在我想移出的(重複)部分中幾乎沒有任何邏輯,如果有的話,所有視圖都是一樣的。這是簡單的HTML。 「只使用推薦的MVC的東西」..是我試圖實現對任何規則或建議?我只是試圖重構出重複的HTML塊。 – TweeZz