2016-03-24 4 views
2

私は自分の編集フォームに多くのブートストラップ入力を持ち、モデルバインディングにはasp-forタグヘルパーを使用しています。カスタムタグヘルパーでasp-forを解決する

   <div class="form-group"> 
        <div class="fg-line"> 
         <label asp-for="@Model.Name" class="control-label"></label> 
         <input asp-for="@Model.Name" class="form-control"/> 
        </div> 
        <span asp-validation-for="@Model.Name" class="help-block"></span> 
       </div> 

私は書くことができるように、カスタムタグヘルパーを書きたい:

<bsinput asp-for="@Model.Name" /> 

...上記の出力を生成します。

入れ子タグヘルパーを評価することはできますか?

+0

[asp-net 5で "asp-for"の文字列値を渡す方法はありますか(http://stackoverflow.com/questions/34282640/how-can-i-pass-string-value-for -asp-for-asp-net-5) –

+0

上記の答えは、asp-forタグヘルパーの動作を再現します。私は既存の機能を再作成せずに、カスタムタグヘルパー内でasp-forタグヘルパーを使用するソリューションを探しています。 – Jetro223

答えて

3

同じ問題についていくつかの調査をしているうちに、私はこの質問に遭遇しました。これは私が私の問題を解決した方法です:

私の場合は、私のカスタムタグヘルパーで生成されたカラーピッカーがあります。

public class ColourPickerTagHelper : TagHelper 
{ 
    public ModelExpression AspFor { get; set; } 
    public List<CustomSelectItem> AspColours { get; set; } 

    public override void Process(TagHelperContext context, TagHelperOutput output) 
    { 
     output.TagName = "select"; 
     string name = this.AspFor.Name; 
     if (!String.IsNullOrEmpty(name)) 
     { 
      output.Attributes.Add("name", name); 
     } 
     output.Content.SetHtmlContent(LoadMyOptions()); 
     output.TagMode = TagMode.StartTagAndEndTag; 
    } 
} 

そして、私はこのようにそれを呼び出す:これは私のクラスである

<colour-picker asp-for="Form.Colour" asp-colours="Model.MyOptions" /> 

編集:私はModelExpressionオブジェクトを知ったので、私は私の答えを更新しました。

関連する問題