5

Google で taghelpers の例を見てきましたが、探している例が見つかりませんでした。

次のコードがあります。

<div class="form-group">
    <label asp-for="PersonName" class="col-md-2 control-label"></label>
    <div class="col-md-10">
        <input asp-for="PersonName" class="form-control" />
        <span asp-validation-for="PersonName" class="text-danger"></span>
    </div>
</div>

私がやろうとしているのは、それを次のようなものに置き換えることです

<bootstraprow asp-for="PersonName"></bootstraprow>

ただし、他のタグヘルパーを含むタグヘルパーを書くかどうかはわかりません

  1. 出来ますか?
  2. 可能であれば、上記のコード例を提供してください

編集:カスタムタグヘルパーに変数を保存するのと同じではありませんが、他のカスタムタグヘルパーまたは既存のタグヘルパーを呼び出したいです。

4

1 に答える 1

2

あなたが持っているものを確認すると、使用しているプロパティは PersonName だけです。マークアップ自体に関しては、それ以外はすべて古き良き HTML です。

したがって、何も交換する必要はありません。必要なのは、に依存するコンストラクタを持つことIHtmlGeneratorです。これは自動的に挿入され、モデルに基づいてさまざまなタグを生成できるようになります。

関連するIHtmlGenerator署名:

public interface IHtmlGenerator
{
    ...

    TagBuilder GenerateValidationMessage(
        ViewContext viewContext,
        string expression,
        string message,
        string tag,
        object htmlAttributes);
    TagBuilder GenerateLabel(
        ViewContext viewContext,
        ModelExplorer modelExplorer,
        string expression,
        string labelText,
        object htmlAttributes);
    TagBuilder GenerateTextBox(
        ViewContext viewContext,
        ModelExplorer modelExplorer,
        string expression,
        object value,
        string format,
        object htmlAttributes);
    ...
}

以上です!

基本的なタグをキャプチャするコードは次のとおりです。

[HtmlTargetElement("bootstraprow")]
public BootstrapRowTagHelper: TagHelper
{
    protected IHtmlGenerator Generator { get; set; }
    public InputTagHelper(IHtmlGenerator generator)
    {
        Generator = generator;
    }

    [HtmlAttributeName("asp-for")]
    public ModelExpression For { get; set; }

    [HtmlAttributeNotBound]
    [ViewContext]
    public ViewContext ViewContext { get; set; }

    public override void Process(TagHelperContext context, TagHelperOutput output)
    {
        //todo: write your html generating code here.
    }
}

TagHelpers から Bootstrap HTML を生成するサンプル コードを含むリポジトリを次に示します。

https://github.com/dpaquette/TagHelperSamples/blob/master/TagHelperSamples/src/TagHelperSamples.Bootstrap/

于 2015-11-11T13:34:16.330 に答える