5

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

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

经过几个月的开发,我现在有很多这些声明性的 html 帮助程序,我必须在所有项目中共享它的唯一一个解决方案是使用非常糟糕的“复制粘贴驱动开发”实践。

还有其他方法吗?

附言

只是不要被什么是声明性 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   
}

在此处输入图像描述

4

3 回答 3

2

制作这些助手的类库,然后在项目之间共享。如果您将助手放在自定义创建的文件夹中会更好Helpers。这就是我所做的。

您可以参考这个答案:我应该将我的实用程序类放在 ASP.NET MVC3 应用程序中的哪个位置?

于 2013-03-11T18:51:41.413 回答
0

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

或者,如果您不想将其添加到using大量文件的顶部,您可以添加对存在于 Views 文件夹下的 Web.config 文件的引用。您可能必须关闭并重新打开剃刀页面以帮助 Visual Studio 确认新的程序集引用。

于 2020-11-18T23:23:50.377 回答
-1

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

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

于 2013-03-11T20:51:31.297 回答