我认为我更愿意重构它,一个可能是私有的方法来生成每个参数标记,减少代码重复,否则我更喜欢StringBuilder。
private static string Param( this HtmlHelper helper, string name, string value )
{
var tagBuilder = new TagBuilder("param");
tagBuilder .MergeAttribute("name", name);
tagBuilder .MergeAttribute("value", value);
return tagBuilder.ToString( TagRenderMode.Normal );
}
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 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 = helper.Param( "movie", url ) +
helper.Param( "allowFullScreen", "true" ) +
helper.Param( "allowscriptaccess", "always" ) +
embedBuilder.ToString(TagRenderMode.Normal);
return objBuilder.ToString(TagRenderMode.Normal);
}