2016-11-01 25 views
0

モデル条件が満たされたときにフィールドを無効にする単純な選択タグヘルパーを作成しました。しかし、それをRazor Viewに適用すると、ビューレンダリング時に組み込みのasp-itemsタグヘルパーを2回実行し(同じリストを2回追加する)ように見えます。どんな助けもありがとう。 選択リストのためのAsp.Netコアカスタムタグヘルパー - Asp-Itemsが2回実行されているように見える

ビューで問題のあるタグヘルパー

[HtmlTargetElement("select", Attributes = "asp-disabled")] 
public class DisabledSelectTagHelper : SelectTagHelper 
{ 
    public DisabledSelectTagHelper(IHtmlGenerator generator) : base(generator) {} 

    [HtmlAttributeName("asp-disabled")] 
    public bool Disabled { get; set; } 

    public override void Process(TagHelperContext context, TagHelperOutput output) 
    { 
     if (Disabled) 
      output.Attributes.Add("disabled", null); 

     base.Process(context, output); 
    } 
} 

タグヘルパーは

<div class="col-xs-4 padding-top-sm"> 
    <label asp-for="CreditCardVendor" class="inline"></label> 
    <select asp-for="CreditCardVendor" asp-items="ViewBag.CreditCardVendors" class="form-control" asp-disabled="Model.UpdateCreditCardExpirationOnly"></select> 
</div> 

_ViewImports.cshtmlは(ここでは解決

@using UI 
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 
@addTagHelper *, UI 
@removeTagHelper Microsoft.AspNet.Mvc.TagHelpers.InputTagHelper, Microsoft.AspNet.Mvc.TagHelpers 
@removeTagHelper Microsoft.AspNet.Mvc.TagHelpers.SelectTagHelper, Microsoft.AspNet.Mvc.TagHelpers 
+0

あなたの完全な剃刀のビューですか? – JARRRRG

答えて

0

ファイルbase.Processを呼び出していないことでした) 方法。デバッグ中にTagHelperOutputパラメータを調べると、asp-itemsの結果がすでに実行されていて、メソッドを明示的に呼び出すとasp-itemsが再実行されたことがわかりました。

関連する問題