Как скрыть стандартный (существующий) HtmlHelper - PullRequest
0 голосов
/ 11 ноября 2010

Я создал набор пользовательских расширений HtmlHelper.

Я хотел бы знать, возможно ли запретить другим разработчикам в том же проекте использовать стандартный HtmlHelpers.

Например: скажи, у меня есть ..

public static string CustomDropDown(this HtmlHelper html)
{
   //Custom code here
}

Я хочу, чтобы только <% Html.CustomDropDown(..)%> был виден разработчикам, а не стандарт <% Html.DropDownList(..)%> или какие-либо из его перегрузок.

Кто-нибудь знает, если это возможно и как?

Ответы [ 5 ]

3 голосов
/ 11 ноября 2010

Попробуйте вместо этого использовать EditorTemplates и / или DisplayTemplates. Таким образом, все, что нужно вашим разработчикам, это всегда вызывать

Html.EditorFor(model => model.MySpecialProperty);

или

Html.DisplayFor(model => model.MySpecialProperty);
1 голос
/ 11 ноября 2010

Почему бы просто не сказать им?

«Эй, ребята, эти пользовательские помощники намного лучше, и вы должны их использовать».

Если у вас есть поддержка со стороны руководства, это не должно быть проблемой.

0 голосов
/ 24 ноября 2010

Не могли бы вы просто изменить свой код ??

public class CustomControls
{
    private readonly HtmlHelper _helper;
    public CustomControls(HtmlHelper helper)
    {
       _helper = helper;

    }

    public static string DropDown()
    {
       //Custom code here
    }
 }

 public CustomControls CustomControls(this HtmlHelper helper)
 {
    return new CustomControls(helper);
 }

Использование:

<%:  Html.CustomControls().DropDown()  %>
0 голосов
/ 11 ноября 2010

ASP.NET MVC - это открытый проект - вы можете загрузить исходный код и вручную удалить некоторые методы из класса HtmlHelper, перестроить и предоставить эту библиотеку своим разработчикам.

0 голосов
/ 11 ноября 2010

Я сомневаюсь, что есть какое-либо отказоустойчивое решение, и, возможно, это тоже не очень мудрое решение ...

Но вы могли бы рассмотреть возможность удаления раздела

<add namespace="System.Web.Mvc" />

изв web.config.

...