.Net Core RC1を使用してMVC 6のタグヘルパーを作成しようとしています。私はスーパー近くsources良い数ではなく、何かを発見した、thisが最も近かった私が見つかりました。そして、私は私の既存のコードを作成するために必要な考えの要素ました:これで起動するにはMVC 6 .Net Core1リッカートスケールのカスタムタグヘルパーを作成
を私のターゲット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>
今は入力タグの1つを表示しようとしています。私がそれを理解できれば、私は他のものを手に入れるためのループを追加します。ここに私の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>");
}
}
は私のかみそりCSHTMLです:
<input likert-for="CharacterUnderstanding" />
しかし、私は私のHTML出力としてこれを取得する:
<input />
だから、タグを拾っていると、それを処理しますが、私は期待していません。私が間違ったところでの助けは大いに感謝されるでしょう。
ありがとうございます。私はどこが間違っていたかを見て、数分後に追いかけると思います。私はoutput.MergeAttributesが何をしているのか分からないと思う。出力にはMergeAttributesがありますか?それはinput.MergeAttribute(key、value)ですか? – Xaxum
更新プログラムとして。しかし、私はSpan CSSクラスを追加することができませんでした。したがって、すべてがHTMLを正しくレンダリングしますが、スパンのクラスはありませんか? – Xaxum
'output.MergeAttributes'は' Microsoft.AspNet.Mvcの拡張メソッドを使います。TagHelpers'(RC1と仮定します)。私は、出力スパンにフォームコントロールクラスを追加するとともに、剃刀コードで指定されている追加の属性とクラスを許可しています。例えば、あなたは ... 'と表示されるような、剃刀' 'を持つことができます。答えのようにコードを試しましたか?それは私のために正常に動作します –