Я написал помощник HTML для создания ссылки на YouTube. У этого есть 3 параметра, YouTubeID, Ширина и Высота. Первоначально я написал его с помощью StringBuilder, но затем решил попробовать использовать TagBuilder (ну, некоторые из них).
Вот два разных возврата:
//Tag Builder
public static string YouTube(this HtmlHelper helper, string youtubeId, string width, string height)
{
const string vidSuffix = "&hl=en_US&fs=1";
var url = "http://www.youtube.com/v/" + youtubeId + vidSuffix;
var objBuilder = new TagBuilder("object");
objBuilder.MergeAttribute("width",width);
objBuilder.MergeAttribute("height",height);
var movParamBuilder = new TagBuilder("param");
movParamBuilder.MergeAttribute("name","movie");
movParamBuilder.MergeAttribute("value",url);
var fsParamBuilder = new TagBuilder("param");
fsParamBuilder.MergeAttribute("name","allowFullScreen");
fsParamBuilder.MergeAttribute("value","true");
var saParamBuilder = new TagBuilder("param");
saParamBuilder.MergeAttribute("name", "allowscriptaccess");
saParamBuilder.MergeAttribute("value", "always");
var embedBuilder = new TagBuilder("embed");
embedBuilder.MergeAttribute("src",url);
embedBuilder.MergeAttribute("type", "application/x-shockwave-flash");
embedBuilder.MergeAttribute("allowscriptaccess","always");
embedBuilder.MergeAttribute("allowfullscreen","true");
embedBuilder.MergeAttribute("width",width);
embedBuilder.MergeAttribute("height",height);
objBuilder.InnerHtml = movParamBuilder.ToString(TagRenderMode.Normal) +
fsParamBuilder.ToString(TagRenderMode.Normal) +
saParamBuilder.ToString(TagRenderMode.Normal) +
embedBuilder.ToString(TagRenderMode.Normal);
return objBuilder.ToString(TagRenderMode.Normal);
}
//StringBuilder
public static string YouTube(this HtmlHelper helper, string youtubeId, string width, string height)
{
const string vidSuffix = "&hl=en_US&fs=1";
var url = "http://www.youtube.com/v/" + youtubeId + vidSuffix;
sb.AppendFormat("<object width=\"{0}\" height=\"{1}\">", width, height);
sb.AppendLine();
sb.AppendFormat("<param name=\"movie\" value=\"{0}\">",url);
sb.AppendLine();
sb.Append("</param><param name=\"allowFullScreen\" value=\"true\">");
sb.AppendLine();
sb.AppendFormat("</param><param name=\"allowscriptaccess\" value=\"always\">");
sb.AppendLine();
sb.AppendFormat(
"</param><embed src=\"{0}\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" allowfullscreen=\"true\" width=\"{1}\" height=\"{2}\">",
url, width, height);
sb.AppendLine();
sb.Append("</embed></object>");
return sb.ToString();
}
Оба они генерируют один и тот же код, за исключением того, что StringBuilder добавляет разрыв строки после каждого раздела.
Есть какие-нибудь мысли о том, что было бы лучше, или, если это вообще имеет значение? Спасибо!