[Aktivieren Sie das Intellisense-Attribut HTMLHelper für CSS-Klassen]
Ich habe diesen HTMLhelper:
public IHtmlString MyTextBoxFor<TModel, TProperty>(
this HtmlHelper<TModel> html,
Expression<Func<TModel, TProperty>> propertyExpression,
string cssClass)
{
// ...
}
Ich möchte, dass Resharper mir IntelliSense für CSS-Klassen gibt, die in meiner Anwendung definiert sind, wenn der Wert für den Parameter "cssClass" übergeben wird.
Es gibt einige Code-Annotation-Attribute, die Resharper erkennt, aber keine, die in direktem Zusammenhang mit dem Markieren eines Methodenparameters als CSS-Klassen stehen.
Das nächste, das ich finden konnte, war [HtmlAttributeValue (Stringname)] . Ich habe versucht, den Parameter cssClass folgendermaßen anzuwenden:
public IHtmlString MyTextBoxFor<TModel, TProperty>(
this HtmlHelper<TModel> html,
Expression<Func<TModel, TProperty>> propertyExpression,
[HtmlAttributeValue("class")] string cssClass)
{
// ...
}
Das geht aber nicht Es wäre auch super toll, wenn Resharper die eingegebene Klasse erkennen und mich nicht mehr über unbekannte CSS-Klassen in jQuery-Selektorausdrücken nerven würde (die mit dem vom obigen Helfer generierten Textfeld arbeiten).
Bearbeiten: Hier ist ein Screenshot der Art von Intellisense, die für den Parameter "htmlAttributes" einer Aktionsmethode funktioniert. Dies wird mithilfe der Annotation [HtmlElementAttributes] für den Parameter erreicht.
Ich möchte eine ähnliche Annotation, mit der ich CSS-Klassen in einen Zeichenfolgenparameter einfügen kann und dieselbe Intellisense mit CSS-Klassen angezeigt wird.
quelle
Antworten:
Verwenden Sie [ValueProvider]
Aus den derzeit von Resharper 10 unterstützten Code Annotations würde der beste Kandidat dieses Attribut verwenden. Über den obigen Link:
Leider habe ich nicht herausgefunden, wie es funktioniert. Vielleicht ist es in meiner Resharper-Version 9.2 fehlerhaft.
Was ich bisher versucht habe:
Selbst wenn Sie es zum Laufen bringen, müssen Sie die Werteliste noch füllen.
Und natürlich können Sie Ihre Code-Annotation / -Erweiterung für Resharper weiterentwickeln.
Warum nicht ein stark typisiertes Objekt anstelle eines Strings verwenden?
Manchmal könnten wir anstelle von
string
undint
Klassen mit stärkerem Typ unseres eigenen Designs verwenden. Da Sie anscheinend Ihren Code steuern, können Sie anstellestring
eines CSS-Namens einen neuen Typ wie erstellenCssClass
.Sie müssen lediglich als vorgefertigtes Ereignis einen Aufruf an einen Generator hinzufügen, der jedes CSS im Projekt analysiert und dynamisch eine Klasse wie diese erstellt:
und dann sieht Ihre Probe so aus:
quelle