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()
空の文字列を返す:(
どのように私はそれを試してみましたか? –