2016-03-24 13 views
2

Ich habe eine Menge von Bootstrap-Eingaben in meinen Bearbeitungsformularen und ich benutze die asp-for-Tag-Helfer für Modellbindung.Auflösen asp-für in benutzerdefinierten Tag Helfer

   <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> 

Ich mag einen benutzerdefinierten Tag Helfer schreiben, so dass ich schreiben kann:

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

..., die über die Ausgabe erzeugt.

Können geschachtelte Tag-Helfer ausgewertet werden?

+0

Mögliche Duplikate von [Wie kann ich String-Wert für "asp-for" in asp net 5 übergeben] (http://stackoverflow.com/questions/34282640/how-can-i-pass-string-value-for -asp-for-in-asp-net-5) –

+0

Die Antwort oben erzeugt das Verhalten des asp-for-Tag-Helpers neu. Ich bin auf der Suche nach einer Lösung, um den Asp-for-Tag-Helfer in einem benutzerdefinierten Tag-Helfer zu verwenden, ohne die vorhandene Funktionalität neu zu erstellen. – Jetro223

Antwort

3

Ich stolperte über diese Frage, während ich etwas über dasselbe Problem recherchierte. So habe ich das Problem für mich gelöst:

In meinem Fall habe ich eine Farbauswahl, die mit meinem benutzerdefinierten Tag Helfer generiert wird. Das ist meine Klasse:

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; 
    } 
} 

Und ich nenne es wie folgt aus:

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

EDIT: Ich aktualisiert meine Antwort, da ich über die ModelExpression Objekt herausgefunden.

Verwandte Themen