2017-08-31 19 views
1

を変更するにはどうすればasp.netコア(2.0)TagHelpersと困惑しています。私はフォームに入力フィールドを追加するために使用できるasp-forタグヘルパー機能を拡張しているTagHelperを持っています。asp.netコアTagHelper - value属性

私は、デフォルトのASP-のヘルパーが実行された後に前に最終的なHTMLのvalue属性を変更したいです。ここに私の属性です:

[HtmlTargetElement("input", Attributes = "asp-for")] 
public class DateTagHelper : TagHelper 
{ 
    [HtmlAttributeName("asp-for")] 
    public ModelExpression For { get; set; } 

    public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) 
    { 
     // Process the asp-for as normal - this will set the id,name,value attributes of the input element based on the model 
     base.Process(context, output); 

     // Now I want to change the value attribute here 
     // output.Attributes["value"] = "hello" -- won't work :(
    } 

} 

私は属性を変更することはできません - それは読み取り専用です。私は新しい属性しか追加できません。

私はこのように、文字列として最終的にレンダリングされた出力を取得し、そこにそれを変更するには狡猾な計画を持っていた:

var childContent = output.Content.IsModified ? output.Content.GetContent() : 
     (await output.GetChildContentAsync()).GetContent(); 

var newContent = // Do some string replacing here with childContent.. 

output.Content.SetHtmlContent(newContent); 

しかし、両方output.Content.GetContent()(await output.GetChildContentAsync()).GetContent()空の文字列を返す:(

答えて

1

あなたは使用する必要がありますSetAttribute

output.Attributes.SetAttribute("value", "hello"); 
+0

どのように私はそれを試してみましたか? –

関連する問題