2013-03-11 85 views
4

是否可以將聲明性html helper放入與應用程序web項目不同的程序集中?在Asp.Net中的項目之間共享聲明性html helper MVC

目前,我知道我可以把我的聲明性HTML幫助器的唯一地方是在我的應用程序Web項目的文件夾'App_Code'。

經過幾個月的開發,我現在有很多這些聲明性的HTML幫助器,我必須在我的所有項目中共享它的唯一解決方案是使用'Copy Paste Driven Development'的非常糟糕的做法。

還有其他方法嗎?

P.S.

只是沒有受什麼是聲明HTML輔助,這裏的定義相混淆是一個代碼示例,以使得相比延長System.Web.Mvc.Html鍵入c#擴展的區別:

@using Microsoft.Web.Mvc.Html 

@helper YesNoRadioButton(System.Web.Mvc.HtmlHelper html, string name, bool value, bool disable = false) 
{ 
    @html.RadioButton(name, true, value, id: name.Replace(".", "_") + "_Yes", disabled: disable) @:Oui 
    @html.RadioButton(name, false, !value, id: name.Replace(".", "_") + "_No", disabled: disable) @:Non 
} 

@helper YesNoRadioButton(System.Web.Mvc.HtmlHelper html, string name, bool? value, bool disable = false) 
{ 
    @html.RadioButton(name, true, value.HasValue && value.Value, id: name.Replace(".", "_") + "_Yes", disabled: disable) @:Oui 
    @html.RadioButton(name, false, value.HasValue && !value.Value, id: name.Replace(".", "_") + "_No", disabled: disable) @:Non 
} 

enter image description here

+0

+1。這是非常令人討厭的,我們必須在第五版框架中解決這樣的問題。 : -/ – 2014-03-11 11:48:42

回答

2

讓那些傭工的類庫,然後分享它projects.It中會更好,如果你把你的助手在自定義創建的文件夾Helpers。這就是我所做的。

你可以參考這樣的回答:Where shall I put my utilities classes in a ASP.NET MVC3 application?

+1

對不起Bhushan如果我有點困惑,但我知道如何創建庫和擴展的用法。 :)但是HTML helper不是簡單的擴展(例如在web應用程序中用於生成html代碼的靜態類); htlm幫助程序是部分html視圖,您可以使用特定語法來定義html,如用戶控件。默認情況下,Asp.Net MVC搜索到App_Code文件夾來查找這種類型的「部分視圖」。我會改變我的問題,添加一個更具體的html helper的例子。 – Samuel 2013-03-11 19:48:38

-1

我寫了一篇文章,帶您通過製作HTML幫助庫所需的步驟。最後有一個完整的項目示例,您可以從GitHub下載該示例。

https://www.simple-talk.com/dotnet/asp.net/writing-custom-html-helpers-for-asp.net-mvc/

+0

我誤導了學期;確切的說法是'Declarative html helper',這不是你在文章中討論的內容。無論如何,根據這種幫助類型的定義的性質,我認爲不可能將代碼放在Web項目應用程序之外。我必須在c#擴展,標記生成器等的幫助下將'html helper'中的'聲明性html助手'轉換成...謝謝。 – Samuel 2013-03-12 14:12:05

+0

啊,我明白了。是的,我會轉換它。以這種方式進行移植只需要很少的努力。您可以像使用聲明助手一樣擴展Html.RadioButton。 – 2013-03-12 15:29:24

+0

僅供鏈接的答案不是答案。請在您的答案中包含所有相關信息,以便答案可以獨立運行,以防鏈接將來消失。 – zzzzBov 2017-01-11 18:56:28