C # рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ HTML рдЯреИрдЧ рдХреЛ рдХреИрд╕реНрдХреЗрдбрд┐рдВрдЧ рдХрд░рдирд╛

ASP.NET MVC рдХреЗ рд▓рд┐рдП рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдЧрд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдореИрдВрдиреЗ рдЦреБрдж рдХреЛ рдпрд╣ рд╕реЛрдЪрддреЗ рд╣реБрдП рдкрдХрдбрд╝рд╛ рдХрд┐ HTML рдЯреИрдЧреНрд╕ рдХреА рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд░рдЪрдирд╛ рдХреЛ рдШрдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдПрдЪрдЯреАрдПрдордПрд▓ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИред * рдЕрдВрддрд░рд┐рдХреНрд╖, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдмрд╣реБрдд рдЭреВрда рд╣реИред рдЬрд▓реНрджрдмрд╛рдЬреА рдХреЗ рд▓рд┐рдП, рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдпрд╣рд╛рдВ (GitHub) рджреЗрдЦреЗрдВ , рдФрд░ рдмрд╛рдХреА рдХреЗ рд▓рд┐рдП, рдмрд┐рд▓реНрд▓реА рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд░реЗрдВред

рдХрд╛рд░реНрдп


рдПрдХ HTML рдЯреИрдЧ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдирд╛рдо, рдХрдХреНрд╖рд╛рдПрдВ, рд╢реИрд▓реА, рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдЖрджрд┐ рд╣реИрдВред .NET рдореЗрдВ, рдЗрд╕ рд╕реБрдВрджрд░рддрд╛ рдХреЗ "рдореИрдиреБрдЕрд▓" рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ TagBuilder рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдзреАрд░реЗ-рдзреАрд░реЗ рдЗрд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдореЗрдЯрд╛ рдФрд░ рдмрд╕ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рднрд░реЗрдВред

рд▓реЗрдХрд┐рди!

рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдирд┐рдпрдорд┐рдд рдЙрдкрдпреЛрдЧ рдореБрдЭреЗ рдмрд╣реБрдд рдиреАрд░рд╕ рд▓рдЧ рд░рд╣рд╛ рдерд╛ред рд▓рдЧрд╛рддрд╛рд░ред

рдпрд╣рд╛рдБ рдПрдХ рдорд╛рдирдХ рдмрдЯрди рддрддреНрд╡ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ рдЙрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

<!-- HTML --> <button type="button" class="btn btn-success">Success</button> 

 // C# var tb = new TagBuilder("button"); tb.Attributes.Add("type", "button"); tb.AddCssClass("btn"); tb.AddCssClass("btn-success"); tb.SetInnerText("Success"); var htmlString = tb.ToString(TagRenderMode.Normal); 

рд╣рдо рдпрд╣рд╛рдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдХрд┐ рдХрднреА-рдХрднреА HTML рдЯреИрдЧ рдХреЗ рд▓рд┐рдП рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдПрдХ рдпрд╛ рдХрдИ * рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде InnerHtml, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдмрджрд▓реЗ рдореЗрдВ рдПрдХ рд╣реА рддрд░рд╣ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - рд▓рдВрдмреЗ рд╕рдордп рддрдХ-рдЪрд░рдг-рджрд░-рдЪрд░рдг - рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЖрдк рдХреБрдЫ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХреБрдЫ рдХрдо рджрд┐рдирдЪрд░реНрдпрд╛ред

рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЯреИрдЧрдбреЙрдХреНрдЯрд░ рд╡рд░реНрдЧ рдХрд╛ рдЬрдиреНрдо рд╣реБрдЖред

рдмрддрд╛рдИ рдЧрдИ рд╕рдорд╕реНрдпрд╛ рдЬрд┐рд╕реЗ рдореИрдВ рд╣рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рд╡рд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ - HTML рдЯреИрдЧреНрд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЪрд░рдг-рджрд░-рдЪрд░рдг рд╕реЗ рджреВрд░ рдЬрд╛рдПрдВ рдФрд░ HTML рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рдкреНрд░рд╛рдХреГрддрд┐рдХ рдШреЛрдВрд╕рд▓реЗ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВред

рдирд┐рд░реНрдгрдп


рд▓рд┐рдВрдХ: TagDecorator

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг рдореЗрдВ, рд╕рдорд╛рдзрд╛рди рдореЗрдВ рджреЛ рд╡рд░реНрдЧ рд╢рд╛рдорд┐рд▓ рдереЗ, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдЙрдирдореЗрдВ рдПрдХ рдФрд░ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛:

TagDecorator рдореБрдЦреНрдп рд╢реНрд░рдорд┐рдХ рд╡рд░реНрдЧ рд╣реИ, рдЬреЛ рдПрдХ рдЯреИрдЧ (TagWrapper) рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдЧ рдореЗрдВ рд╕рд╛рджреЗ рдкрд╛рда рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕рдВрд▓рдЧреНрди рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдореМрдЬреВрджрд╛ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рджреЛрдиреЛрдВ рд╕рд╛рдорд╛рдиреНрдп рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╣реИрдВ AddAttribute, AddCss рдФрд░ рдирд┐рдЬреА рдлрд╝рдВрдХреНрд╢рдВрд╕ AddType, AddName, AddId - рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред

TagWrapper рдПрдХ рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рдПрдХ рдЯреИрдЧ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рдЬрдм рднреА рд╕рдВрднрд╡ рд╣реЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЯреИрдЧрдмрд░реНрд╕реНрдЯ рд╕реЗ рджреВрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЗрдиреНрдЯреЗрд▓рд┐рд╡рд┐рдЬрд╝рди рдореЗрдВ рдирдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЯреИрдЧрдмреНрдпреВрд▓рд░ рд╡рд░реНрдЧ рдХреЗ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рднреНрд░рдорд┐рдд рдирд╣реАрдВ рдереЗред

рдЯреИрдЧ - рд░реЗрдЬрд░ рд╡реНрдпреВ рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдлреНрд░реЗрдорд┐рдВрдЧ рдПрдЪрдЯреАрдПрдордПрд▓ рдмреНрд▓реЙрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ / рд╕рдорд╛рдкреНрддрд┐ рдЯреИрдЧ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╡рд░реНрдЧ

 @using(Html.SuchExtension) { //... }. 

рдЙрджрд╛рд╣рд░рдг


рд╕рдВрдХреЗрддрд┐рдд рдмрдЯрди рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, TagDecorator рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдлрд╛рдпрджреЗ рдЗрддрдиреЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИрдВ:

 var htmlString = "button".ToTag() .AddType("button") .AddCss(new[] {"btn", "btn-success"}) .SetText("Success") .ToString(); 

рд▓реЗрдХрд┐рди рдЕрдм рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдХрд╛рд░реНрдб рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде - рд╕рдм рдХреБрдЫ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдВрдЦ рдХреЛ рдЕрдзрд┐рдХ рднрд╛рддрд╛ рд╣реИ:

TagBuilder рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

 var divMain = new TagBuilder("div"); divMain.AddCssClass("card"); divMain.Attributes.Add("style", "width: 18rem;"); var img = new TagBuilder("img"); img.AddCssClass("card-img-top"); img.Attributes.Add("src", "..."); img.Attributes.Add("alt", "Card image cap"); var divBody = new TagBuilder("div"); divBody.AddCssClass("card-body"); var h = new TagBuilder("h5"); h.AddCssClass("card-title"); h.SetInnerText("Card title"); var p = new TagBuilder("p"); p.AddCssClass("card-text"); p.SetInnerText("Some quick example text to build on the card title and make up the bulk of the card's content."); var a = new TagBuilder("a"); a.Attributes.Add("href", "#"); a.AddCssClass("btn"); a.AddCssClass("btn-primary"); a.SetInnerText("Go somewhere"); divBody.InnerHtml += h.ToString(TagRenderMode.Normal); divBody.InnerHtml += p.ToString(TagRenderMode.Normal); divBody.InnerHtml += a.ToString(TagRenderMode.Normal); divMain.InnerHtml += img.ToString(TagRenderMode.Normal); divMain.InnerHtml += divBody.ToString(TagRenderMode.Normal); return divMain.ToString(TagRenderMode.Normal); 

TagDecorator рдХреЗ рд╕рд╛рде рд╕рдВрд╕реНрдХрд░рдг
 var htmlString = "div".ToTag() .AddCss("card") .AddAttribute("style", "width: 18rem;") .InnerHtml(new [] { "img".ToTag() .AddCss("card-img-top") .AddAttributes(new[] {new[] {"src", "..."}, new[] {"alt", "Card image cap"}}), "div".ToTag() .AddCss("card-body") .InnerHtml(new [] { "h5".ToTag().AddCss("card-title").SetText("Card title"), "p".ToTag().AddCss("card-text").SetText("Some quick example text to build on the card title and make up the bulk of the card's content."), "a".ToTag().AddCss(new[] {"btn", "btn-primary"}).AddAttribute("href", "#").SetText("Go somewhere") }) }).ToString(); 

рдкрд░рд┐рдгрд╛рдо


рд╡рд┐рдкрдХреНрд╖


рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдХреИрд╕реНрдХреЗрдбрд┐рдВрдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрднреА-рдХрднреА рдХреЛрдб рдХреЛ рджрд╛рдИрдВ рдУрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджреЗрддрд╛ рд╣реИ, рдЕрдХреНрд╕рд░ рдбреЗрд╡рд▓рдкрд░ рдХреА рджреГрд╖реНрдЯрд┐ рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИ, рдФрд░ рдкрджрд╛рдиреБрдХреНрд░рдо рдЬрд┐рддрдирд╛ рдЬрдЯрд┐рд▓ рд╣реЛрддрд╛ рд╣реИ, рдЙрддрдирд╛ рд╣реА рдордЬрдмреВрдд рд╣реЛрддрд╛ рд╣реИ

рдЖрдХрд░реНрд╖рдг рдЖрддреЗ рд╣реИрдВ


+ рдХреЛрдб рдХреА рд░реЗрдЦрд╛ - рдХрдо рд╣реЛ рдЧрдИред рд╕рд░рд▓рддрдо рддрддреНрд╡реЛрдВ рдореЗрдВ, рдПрдХ рдЬрдЯрд┐рд▓ HTML рдЯреНрд░реА рдореЗрдВ рд▓рдЧрднрдЧ 1-2 рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рд▓рд╛рдн рд╣реЛрддрд╛ рд╣реИ - рдпрджрд┐ рдЖрдк TagBuilder рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛ рд▓рдЧрднрдЧ 1/3ред

+ рджреГрд╢реНрдпрддрд╛ - рдЖрдк рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд╣рд╛рдБ рдФрд░ рдХрд┐рд╕ рддрд░рд╣ рдХреЗ рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╢рд┐рдХрд╛рд░ рд╣реИрдВред рд╕рдм рдХреБрдЫ рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рд╕рд╣рдЬ рдФрд░ рд╕рдордЭрдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИред

+ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд┐рд▓рд┐рдЯреА - рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓реЗ / рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдмрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреЛрдбрд╝реЗрдВред рдПрдХ рд╢рд░реНрдд рдЬрд╛рдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреЛрдбрд╝реЗрдВред

рд╕рдВрднрд╡ рд╕реБрдзрд╛рд░


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдЗрди рд╡рд░реНрдЧреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯреИрдЧ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ рдерд╛ рдЬреЛ рдЯреВрд▓рдЯрд┐рдк рдореЗрдВ рдХреЗрд╡рд▓ рдХреБрдЫ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрдЯрди рдЯреИрдЧ рдореЗрдВ AddReference рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЯреВрд▓рдЯрд┐рдк рдХреЛ рд╣рдЯрд╛ рджреЗрдВ, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХрддрд╛ рдХреЗ рд▓рд┐рдП рдЗрди рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ - рдпрд╣ рд╕рдорд╛рдзрд╛рди рдЕрдм рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдореЗрд░реА рдмрд╣реБрдд рдорджрдж рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рднреА рдПрдХ NuGet рдкреИрдХреЗрдЬ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╕рдордп рдХреА рдХрдореА рдХреЗ рд▓рд┐рдП - рд╕рдм рдХреБрдЫ рд╕реНрдердЧрд┐рдд рд╣реИред

Source: https://habr.com/ru/post/hi416459/


All Articles