[Включить intellisense в атрибуте HTMLHelper для классов css]
У меня есть HTMLhelper:
public IHtmlString MyTextBoxFor<TModel, TProperty>(
this HtmlHelper<TModel> html,
Expression<Func<TModel, TProperty>> propertyExpression,
string cssClass)
{
// ...
}
Я хочу, чтобы Resharper предоставил мне классы IntelliSense для CSS, определенные в моем приложении, при передаче значения для параметра cssClass.
Resharper распознает некоторые атрибуты аннотации кода, но ни один из них не имеет прямого отношения к маркировке параметра метода как класса CSS.
Ближайшее, что я смог найти, было [HtmlAttributeValue (имя строки)] . Я пробовал применить к параметру cssClass вот так:
public IHtmlString MyTextBoxFor<TModel, TProperty>(
this HtmlHelper<TModel> html,
Expression<Func<TModel, TProperty>> propertyExpression,
[HtmlAttributeValue("class")] string cssClass)
{
// ...
}
Но это не работает. Было бы также замечательно, если бы Resharper распознал введенный класс и перестал беспокоить меня о неизвестных классах CSS в выражениях селектора jQuery (которые работают с текстовым полем, созданным указанным выше помощником).
Изменить: вот скриншот типа intellisense, который работает с параметром «htmlAttributes» метода действия. Это достигается с помощью аннотации [HtmlElementAttributes] к параметру.
Мне нужна аналогичная аннотация, которая позволяет мне помещать классы css в строковый параметр и иметь тот же самый intellisense, отображающий классы css.
источник
Ответы:
Используйте [ValueProvider]
Из аннотаций кода, которые в настоящее время поддерживает Resharper 10, лучшим кандидатом было бы использовать этот атрибут. По ссылке выше:
К сожалению, я не разобрался, как это работает. Может он глючит в моем Resharper версии 9.2.
Что я пробовал до сих пор:
Даже если вы заставите его работать, вам все равно придется заполнить список значений.
И, конечно же, вы все еще можете разработать аннотацию / расширение кода для Resharper.
Почему бы не использовать объект со строгой типизацией вместо строки?
Иногда вместо использования
string
иint
мы могли бы использовать классы с более строгой типизацией нашей собственной разработки. Поскольку кажется, что вы контролируете свой код, вы можете вместо использованияstring
с именем css в нем создать новый тип, напримерCssClass
.Вам просто нужно добавить в качестве предварительно созданного события вызов генератора, который анализирует каждый css в проекте и динамически создает такой класс:
и тогда ваш образец будет выглядеть так:
источник