[Activer l'intellisense sur l'attribut HTMLHelper pour les classes css]
J'ai ce HTMLhelper:
public IHtmlString MyTextBoxFor<TModel, TProperty>(
this HtmlHelper<TModel> html,
Expression<Func<TModel, TProperty>> propertyExpression,
string cssClass)
{
// ...
}
Je souhaite que Resharper me donne IntelliSense pour les classes CSS définies dans mon application lors de la transmission de la valeur du paramètre "cssClass".
Il existe certains attributs d'annotation de code que Resharper reconnaît, mais aucun ne semble directement lié au marquage d'un paramètre de méthode comme étant des classes CSS.
Le plus proche que j'ai pu trouver était [HtmlAttributeValue (string name)] . J'ai essayé de m'appliquer au paramètre cssClass comme ceci:
public IHtmlString MyTextBoxFor<TModel, TProperty>(
this HtmlHelper<TModel> html,
Expression<Func<TModel, TProperty>> propertyExpression,
[HtmlAttributeValue("class")] string cssClass)
{
// ...
}
Mais ça ne marche pas. Ce serait également super si Resharper reconnaissait la classe entrée et cessait de me déranger sur les classes CSS inconnues dans les expressions de sélecteur jQuery (qui fonctionnent sur la zone de texte générée par l'assistant ci-dessus).
Edit: Voici une capture d'écran du type d'intellisense qui fonctionne pour le paramètre "htmlAttributes" d'une méthode d'action. Pour ce faire, utilisez l'annotation [HtmlElementAttributes] sur le paramètre.
Je veux une annotation similaire qui me permette de mettre des classes css dans un paramètre de chaîne et de faire apparaître le même intellisense montrant les classes css.
la source
Réponses:
Utilisez [ValueProvider]
D'après les annotations de code actuellement prises en charge par Resharper 10, le meilleur candidat utiliserait cet attribut. À partir du lien ci-dessus:
Malheureusement, je n'ai pas compris comment cela fonctionne. C'est peut-être bogué dans ma version 9.2 de Resharper.
Ce que j'ai essayé jusqu'à présent:
Même si vous le faites fonctionner, vous devrez toujours remplir la liste des valeurs.
Et bien sûr, vous pouvez toujours développer votre annotation / extension de code pour Resharper.
Pourquoi ne pas utiliser un objet typé fort au lieu d'une chaîne?
Parfois, au lieu d'utiliser
string
etint
, nous pourrions utiliser des classes plus typées de notre propre conception. Puisqu'il semble que vous contrôlez votre code, vous pouvez au lieu d'utiliserstring
avec un nom css dedans, vous pouvez créer un nouveau type commeCssClass
.Vous avez juste besoin d'ajouter comme événement prédéfini un appel à un générateur qui analyse chaque css du projet et crée dynamiquement une classe comme celle-ci:
puis votre échantillon ressemblera à ça:
la source