2015-08-26 1 views
0

Je ne sais pas comment produire une variable Razor dans le cadre d'un nom d'attribut après un tiret:Inline sortie rasoir après tableau de bord

<span [email protected](DataAttributeName)="value"/> 
// fails, output: 
<span [email protected](DataAttributeName)="value"/> 

<span data- @(DataAttributeName)="value"/> 
// works, however, the space results in invalid HTML: 
<span data- myname="value"/> 

Comment faire cela correctement?

Actuellement, j'ai la solution suivante:

<span @("data-" + DataAttributeName)="value"/> 

Mais je n'aime pas ça pour des raisons de style évidentes + Visual Studio me dit que « un nom d'attribut est prévu » et affiche une erreur (bien qu'il semble fonctionner correctement), aussi quelque chose que je n'aime pas.

Répondre

0

C'est une partie difficile dans le moteur de rasoir, il essaye d'être intelligent pour sauver l'échappement mais parfois ne laisse pas de solution facile dans des scénarios comme ceci.

Juste pour rester propre, je crée une HtmlHelper extension, ce qui pourrait être un surpuissant, mais juste au cas où vous êtes malade des choses rouges dans l'éditeur comme moi :)

public static class MyHtmlHelperExtension 
{ 
     public static MvcHtmlString DataAttribute(this HtmlHelper helper, string attrName, string value) 
     { 
      return new MvcHtmlString(string.Format("data-{0}='{1}'", attrName, value)); 
     } 
} 

Alors à votre avis, il peut être en quelque sorte plus propre:

<span @Html.DataAttribute(DataAttributeName, "value") />