デバッグ機能を損なうことなく、この問題を解決する別のオプションは次のとおりです。
public static IHtmlString Render(string path, IDictionary<string, object> htmlAttributes)
{
var attributes = BuildHtmlStringFrom(htmlAttributes);
#if DEBUG
var originalHtml = Styles.Render(path).ToHtmlString();
string tagsWithAttributes = originalHtml.Replace("/>", attributes + "/>");
return MvcHtmlString.Create(tagsWithAttributes);
#endif
string tagWithAttribute = string.Format(
"<link rel=\"stylesheet\" href=\"{0}\" type=\"text/css\"{1} />",
Styles.Url(path), attributes);
return MvcHtmlString.Create(tagWithAttribute);
}
私がやっていることは、指定された html 属性をタグの末尾 (デバッグ モードの場合) または唯一のリンク タグの末尾 (縮小/バンドルが有効な場合) に追加することです。
ビューでの使用法:
@Bundles.Render("~/css/print", new { media = "print" })
コードの残りの部分:
public static IHtmlString Render(string path, object htmlAttributes)
{
return Render(path, new RouteValueDictionary(htmlAttributes));
}
private static string BuildHtmlStringFrom(IEnumerable<KeyValuePair<string, object>> htmlAttributes)
{
var builder = new StringBuilder();
foreach (var attribute in htmlAttributes)
{
builder.AppendFormat(" {0}=\"{1}\"", attribute.Key, attribute.Value);
}
return builder.ToString();
}
このテーマについてブログ投稿を書きました: http://danielcorreia.net/blog/quick-start-to-mvc4-bundling/