2010-04-01 5 views
4

Я пытаюсь найти лучший способ персонализировать элемент страницы <head>, чтобы избавиться от лишних разрывов строк, вызванных <head runat="server">, поэтому его правильно отформатировали.ASP.NET: HTML-рендеринг HTML-страницы

До сих пор единственное, что я нашел, который работает следующая:

protected override void Render(HtmlTextWriter writer) 
    { 
     StringWriter stringWriter = new StringWriter(); 
     HtmlTextWriter htmlTextWriter = new HtmlTextWriter(stringWriter); 
     base.Render(htmlTextWriter); 
     htmlTextWriter.Close(); 
     string html = stringWriter.ToString(); 
     string newHTML = html.Replace("<title>\r\n\t", "<title>") 
          .Replace("\r\n</title>", "</title>") 
          .Replace("</head>", "\n</head>"); 

     writer.Write(newHTML); 
    } 

Теперь у меня есть 2 вопроса:

  1. Как выше код влияет на производительность (так это жизнеспособный в производственной среде)?
  2. Есть ли лучший способ сделать это, например метод, который я могу переопределить только для пользовательского рендеринга <head>?

О, да, ASP.NET MVC не является вариантом.

EDIT:

Im спрашивая это касаемо SEO и только мало-мальски перфекционизма.

+0

Почему вы хотите избавиться от лишних линий? –

+1

Этот перфекционизм, применяемый к коду разметки, в частности, приведет только к вашим длительным страданиям. – 2010-04-01 13:19:17

+0

Несколько лишних разрывов строк ничего не означают, так как пробелы сбрасываются при визуализации. – 2010-04-01 13:20:13

ответ

5

Из моего опыта использования форм ASP.NET подразумевается безотзывная передача полномочий на вывод HTML. Лучше принять следующее:

  • Элементы управления Microsoft иногда будут использовать обесцененный или выровненный неправильный HTML.
  • Тег Viewstate всегда будет там, даже если ViewState отключен на уровне страницы или сайта. По-видимому, должно быть ViewState, чтобы сообщить ASP.NET, что нет состояния представления.
  • Вы являетесь не в управлении элементами формы. На странице будет один элемент формы, и он принадлежит ASP.NET.
  • JavaScript будет использоваться для выполнения даже элементарных задач. JavaScript будет нечитабельным, непосредственно встроенным в вашу страницу, и по меньшей мере 50% его будет посторонним.
  • Вы не сможете создавать фрагменты страницы, если только вы не делаете это через веб-службу и много kludge. Каждая .aspx-страница будет иметь <html><head> и почти всегда <form> теги.

Если вам нужен точный контроль над выходом на страницу, использование MVC или другой структуры является обязательным. Даже классический ASP будет работать, но не ASP.NET Forms.

+0

+1 Так что либо переключение рамки/язык, либо прекращение заботы. Подождите немного, отметив это как ответ, чтобы узнать, могу ли я получить еще несколько данных. Благодаря! – Fabian