在Asp.Net MVC中的项目之间共享声明性html助手

时间:2013-03-11 18:48:45

标签: c# asp.net-mvc html-helper

是否可以将声明性html助手放在与应用程序Web项目不同的程序集中?

目前,我知道我可以放置声明性html助手的唯一地方是我的应用程序Web项目的“App_Code”文件夹。

经过几个月的开发,我现在有很多这些声明性的html帮助器,我在所有项目中共享它的唯一解决方案是使用'Copy Paste Driven Development'的非常糟糕的做法。 / p>

还有其他方法吗?

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

3 个答案:

答案 0 :(得分:2)

创建这些帮助程序的类库,然后在项目之间共享它。如果将帮助程序放在自定义创建的文件夹Helpers中,将会更好。这就是我的工作。

您可以参考以下答案:Where shall I put my utilities classes in a ASP.NET MVC3 application?

答案 1 :(得分:0)

是的,有可能,我要做的只是将@using放在剃须刀页面的顶部,以引用其他具有Helper功能的程序集。

或者,如果您想保存自己将using添加到许多文件的顶部,则可以将引用添加到Views文件夹下存在的Web.config文件中。您可能必须关闭并重新打开剃须刀页面才能帮助Visual Studio确认新的程序集引用。

答案 2 :(得分:-1)

我写了一篇文章,带您了解制作HTML帮助程序库所需的步骤。最后有一个完整的项目示例,您可以从GitHub下载。

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