[Włącz funkcję Intellisense w atrybucie HTMLHelper dla klas css]
Mam tego HTMLhelpera:
public IHtmlString MyTextBoxFor<TModel, TProperty>(
this HtmlHelper<TModel> html,
Expression<Func<TModel, TProperty>> propertyExpression,
string cssClass)
{
// ...
}
Chcę, aby Resharper przekazał mi funkcję IntelliSense dla klas CSS zdefiniowanych w mojej aplikacji podczas przekazywania wartości parametru „cssClass”.
Istnieją pewne atrybuty adnotacji kodu, które Resharper rozpoznaje, ale żaden z nich nie wydaje się bezpośrednio związany z oznaczaniem parametru metody jako klas CSS.
Najbliższy, jaki udało mi się znaleźć, to [HtmlAttributeValue (nazwa ciągu)] . Próbowałem zastosować do parametru cssClass w ten sposób:
public IHtmlString MyTextBoxFor<TModel, TProperty>(
this HtmlHelper<TModel> html,
Expression<Func<TModel, TProperty>> propertyExpression,
[HtmlAttributeValue("class")] string cssClass)
{
// ...
}
Ale to nie działa. Byłoby też super, gdyby Resharper rozpoznał wprowadzoną klasę i przestał mnie wkurzać o nieznane klasy CSS w wyrażeniach selektora jQuery (które działają na polu tekstowym wygenerowanym przez pomocnika powyżej).
Edycja: Oto zrzut ekranu przedstawiający rodzaj inteligencji, który działa dla parametru „htmlAttributes” metody akcji. Można to osiągnąć za pomocą adnotacji [HtmlElementAttributes] w parametrze.
Chcę mieć podobną adnotację, która pozwoli mi umieścić klasy css w parametrze ciągu i mieć ten sam intelisense, pokazujący klasy css.
źródło
Odpowiedzi:
Użyj [ValueProvider]
Z adnotacji do kodu obecnie obsługiwanych przez Resharper 10, najlepszy kandydat użyłby tego atrybutu. Z powyższego linku:
Niestety, nie zorientowałem się, jak to działa. Może jest wadliwy w mojej wersji Resharper 9.2.
Czego próbowałem do tej pory:
Nawet jeśli sprawisz, że to zadziała, nadal będziesz musiał wypełnić listę Wartości.
Oczywiście nadal możesz opracować adnotację / rozszerzenie kodu dla Resharper.
Dlaczego nie użyć silnie wpisanego obiektu zamiast łańcucha?
Czasami zamiast używać
string
iint
, moglibyśmy użyć własnych klas o silniejszym typie. Ponieważ wydaje się, że kontrolujesz swój kod, możesz zamiast używaćstring
w nim nazwy CSS, możesz utworzyć nowy typ, taki jakCssClass
.Wystarczy dodać jako wstępnie skompilowane zdarzenie wywołanie generatora, który analizuje każdy plik CSS w projekcie i dynamicznie tworzy taką klasę:
a wtedy twoja próbka będzie wyglądać tak:
źródło