Ich versuche, einen Tag-Helper für MVC 6 mit .Net Core RC1 zu erstellen. Ich habe ein paar gute sources aber nicht etwas ganz nah gefunden, war this in der Nähe fand ich und nahm Elemente Ich dachte, ich brauchte, um meine vorhandenen Code zu erstellen:MVC 6 .Net Core1 Erstellen benutzerdefinierter Tag Helper für Likert Scale
damit zu beginnen, ist mein Ziel HTML:
<span class="form-control">
Highly Disagree
<input type="radio" name="MakingSense" value=1 />
<input type="radio" name="MakingSense" value=2 />
<input type="radio" name="MakingSense" value=3 />
<input type="radio" name="MakingSense" value=4 />
<input type="radio" name="MakingSense" value=5 />
Highly Agree
</span>
Im Moment versuche ich nur eines der Eingabe-Tags zu zeigen. Wenn ich das herausfinden kann, werde ich eine Schleife hinzufügen, um die anderen zu bekommen. Hier ist meine TagHelper
[HtmlTargetElement("input", Attributes = LikertForAttributeName)]
public class LikertTagHelper : TagHelper
{
private const string LikertForAttributeName = "likert-for";
[HtmlAttributeName(LikertForAttributeName)]
public string ModelField { get; set; }
public override void Process(TagHelperContext context, TagHelperOutput output)
{
var content = new StringBuilder();
var input = new TagBuilder("input");
input.MergeAttribute("type", "radio");
input.MergeAttribute("name", ModelField);
input.MergeAttribute("value", "1");
content.AppendLine(input.ToString());
output.Content.SetContent(content.ToString());
output.PreContent.SetHtmlContent("<span class=\"form-control\"");
output.PostContent.SetHtmlContent("</span>");
}
}
Hier ist mein Rasiermesser cshtml:
<input likert-for="CharacterUnderstanding" />
Allerdings habe ich nur bekommen dies als meine HTML-Ausgabe:
<input />
So ist es Kommissionierung das Tag und Verarbeitung es aber nicht wie ich es erwarte. Hilfe, wo ich falsch gelaufen bin, wird sehr geschätzt.
Danke für das Detail. Ich denke ich sehe wo ich schief gelaufen bin und werde weitermachen wenn ich ein paar Minuten habe. Ich denke ich bin mir nicht sicher, was output.MergeAttributes macht. Hat die Ausgabe ein MergeAttributes? Sollte das eingegeben werden.MergeAttribute (Schlüssel, Wert)? – Xaxum
Als Update. Ich war in der Lage, das meiste davon zum Laufen zu bringen, aber ich kann die Span CSS-Klasse nicht hinzufügen. Also rendert alles HTML korrekt, aber keine Klasse für span? – Xaxum
'output.MergeAttributes' verwendet eine Erweiterungsmethode in' Microsoft.AspNet.Mvc.TagHelpers' (angenommen RC1). Ich verwende es fügen Sie die Form-Control-Klasse der Ausgabespanne hinzu, während auch zusätzliche Attribute und Klassen im Rasierer-Code angegeben werden. Zum Beispiel können Sie in Rasierer '' haben, die als ' ...'. Hast du den Code wie in der Antwort ausprobiert? Es funktioniert gut für mich –