2015-11-11 19 views
5

Google'da taghelpers örneklerine bakıyordum ama aradığım herhangi bir örnek bulamadım.Diğer taghelper'lar içeren özel bir ASP.NET 5 taghelper nasıl yazılır

Aşağıdaki kod var: i yapmak bakmak istiyorum ne

<div class="form-group"> 
    <label asp-for="PersonName" class="col-md-2 control-label"></label> 
    <div class="col-md-10"> 
     <input asp-for="PersonName" class="form-control" /> 
     <span asp-validation-for="PersonName" class="text-danger"></span> 
    </div> 
</div> 

Diğer içeren bir taghelper yazmak için emin değilim Ancak

<bootstraprow asp-for="PersonName"></bootstraprow> 

gibi bir şey ile değiştirmek olduğunu taghelpers

  1. Mümkün mü? Bu özel taghelpers içinde variables depolanması ile aynı değil ama diğer özel taghelpers veya mevcut taghelpers çağırmak istiyorum:
  2. Mümkünse yukarıdaki

Düzenleme için kod örnek oluşturmaktadır.

+0

Olası yinelenen [Yuvalama TagHelpers: Burada

[HtmlTargetElement("bootstraprow")] public BootstrapRowTagHelper: TagHelper { protected IHtmlGenerator Generator { get; set; } public InputTagHelper(IHtmlGenerator generator) { Generator = generator; } [HtmlAttributeName("asp-for")] public ModelExpression For { get; set; } [HtmlAttributeNotBound] [ViewContext] public ViewContext ViewContext { get; set; } public override void Process(TagHelperContext context, TagHelperOutput output) { //todo: write your html generating code here. } } 

TagHelpers gelen Bootstrap HTML oluşturan örnek kodla bir Repo var: Burada

temel etiketi yakalayacağı kod biraz ASP.NET'te 5 MVC 6] (http://stackoverflow.com/questions/32692857/nesting-taghelpers-in-asp-net-5-mvc-6) –

+0

Yinelenen değil. "Mümkün yinelenen" sadece TagHelpers yerleştirme hakkında söz. Bu, TagHelper'ın başka bir TagHelper tarafından işlenecek işaretleme oluşturmasıyla ilgilidir. Şu anda mümkün olmayan. –

+0

Diğer etiket yardımcılarını içeren etiket yardımcıları yazıp yazamayacağınızı soruyorsunuz ve eğer varsa, bir örnek verin. Bence, ilgili soru her ikisini de kapsamaktadır. –

cevap

1

Elinizde olanı kontrol edersek, kullandığınız tek özellik PersonName'dir. İşaretlemenin kendisi için, her şey iyi eski HTML'dir.

Yani herhangi bir şeyi değiştirmeniz gerekmez. İhtiyacınız olan şey, IHtmlGenerator'a bağımlı olan kurucuya sahip olmak. Bu otomatik olarak enjekte edilecek ve modelinize göre farklı etiketler oluşturabileceksiniz.

İlgili IHtmlGenerator İmza:

public interface IHtmlGenerator 
{ 
    ... 

    TagBuilder GenerateValidationMessage(
     ViewContext viewContext, 
     string expression, 
     string message, 
     string tag, 
     object htmlAttributes); 
    TagBuilder GenerateLabel(
     ViewContext viewContext, 
     ModelExplorer modelExplorer, 
     string expression, 
     string labelText, 
     object htmlAttributes); 
    TagBuilder GenerateTextBox(
     ViewContext viewContext, 
     ModelExplorer modelExplorer, 
     string expression, 
     object value, 
     string format, 
     object htmlAttributes); 
    ... 
} 

Ve o kadar! arasında

https://github.com/dpaquette/TagHelperSamples/blob/master/TagHelperSamples/src/TagHelperSamples.Bootstrap/

+1

Yukarıdaki cshtml dosyasında referans olarak kod verebilir misiniz? – d234