Render Dynamic MetaTags in ASP.NET Page in Separate Lines

I received a mail today from a DevCurry.com reader after reading my article SEO Enhancements with MetaKeywords and MetaDescription properties in ASP.NET 4.0. Her question was as follows:

In ASP.NET using code with the HTMLMeta class, we can define the HTML meta elements on an ASP.NET page. But the output is all mixed in one line. Can i separate it ?

Let me explain what she means. Here’s a sample code:

HtmlMeta metakeywrd = new HtmlMeta();
metakeywrd.Name = "keywords";
metakeywrd.Content = "add keywords here";

HtmlMeta metadesc = new HtmlMeta();
metadesc.Name = "description";
metadesc.Content = "add meta description here";

Page.Header.Controls.Add(metakeywrd);
Page.Header.Controls.Add(metadesc);

When the page renders, ASP.NET generates meta tags on the same line as shown below.

image

She wanted the meta tags generated on separate lines and I am not sure why!

Anyways the solution is to did this line of code wherever a separate line is needed.

Page.Header.Controls.Add(new LiteralControl("\n"));

Here’s the entire code again

Page.Header.Controls.Add(new LiteralControl("\n"));
HtmlMeta metakeywrd = new HtmlMeta();
metakeywrd.Name = "keywords";
metakeywrd.Content = "add keywords here";

HtmlMeta metadesc = new HtmlMeta();
metadesc.Name = "description";
metadesc.Content = "add meta description here";

Page.Header.Controls.Add(metakeywrd);
Page.Header.Controls.Add(new LiteralControl("\n"));
Page.Header.Controls.Add(metadesc);
Page.Header.Controls.Add(new LiteralControl("\n"));

image

As you can see now, the meta tags are generated on separate lines. If anyone knows a better way or knows the reason why is this really needed, I would love to hear it!



Will you give this article a +1 ? Thanks in advance


About The Author

Suprotim Agarwal
Suprotim Agarwal, ASP.NET Architecture MVP (Microsoft Most Valuable Professional) works as an Architect Consultant and provides consultancy on how to design and develop Web applications.

Suprotim is also the founder and primary contributor to DevCurry, DotNetCurry and SQLServerCurry. He is the Editor of a Developer Magazine called DNC Magazine. He has also written two EBooks 51 Recipes using jQuery with ASP.NET Controls. and The Absolutely Awesome jQuery CookBook

Follow him on twitter @suprotimagarwal

5 comments:

thomasmutton said...

This was bugging me for some time aswell. I came to the same sort of solution as you but coded differently ;) - Good work!

nilesh said...

Just a suggestion. Instead of hardcoding the '\n' to insert a new line we could make use of the Environment variable. Environment.Newline.This would make the code work on other platforms where newline is represented using a different control character.

Suprotim Agarwal said...

thomasmutton: Glad it helped!

Nilesh: Good point, but what do you mean by other platforms?

Anonymous said...

Hi, is there a way to edit an existing meta description instead of adding one?


Using Page.Header.Controls.Add creates a duplicate one. Is there any way to just edit the content of the existing one?

Thanks

Milox said...

nice tip!, thanks