2013-03-11 86 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