我有一个可爱的小进度条在仪表板页面看东西。一旦它启动,它每分钟通过ajax,javascript,blah,blah更新自己。由于我的一些观众在较旧的黑莓上看它,我通常会弄清楚初始渲染服务器端的条形图有多大,并相应地绘制页面,然后让javascript接管,在那些观众身上拥有它。
旧的代码,普通的旧ASP.NET在img标签所在的页面中有一个asp:Label,在服务器上我把整个东西拼凑在一起。当我重构MVC查看事物的方式时,我认为只在服务器上编写图像的宽度样式属性是多么美妙。通过这种方式,页面上的代码会更容易理解。
但它不起作用。例如:
<img src="/content/images/blue_1px.png" class="productionBar_variableBar"
style="width: <% =dbd["ThisShiftProduction_variableBar"] %>;"/>
不幸的是,Visual Studio似乎无法识别&lt; %%&gt;在引用的样式属性中转义。
有什么建议吗?
Siggy
答案 0 :(得分:3)
最简单的方法 - 创建HtmlHelper扩展:
public static class Html
{
public static string ProgressBar(this HtmlHelper html, int width)
{
StringBuilder sb = new StringBuilder();
sb.AppendFormat("img src=\"/content/images/blue_1px.png\" class=\"productionBar_variableBar\" style=\"width: {0};\" />", width);
return sb.ToString();
}
// OR
public static string ProgressBar(this HtmlHelper html, int width, string src, string cssClass)
{
TagBuilder tagBuilder = new TagBuilder("img");
tagBuilder.AddCssClass(cssClass);
tagBuilder.MergeAttribute("style", "width: " + width.ToString());
string srcUrl = new UrlHelper(html.ViewContext.RequestContext).Content(src);
tagBuilder.MergeAttribute("src", srcUrl);
return tagBuilder.ToString(TagRenderMode.Normal);
}
}
使用它:
<%= Html.ProgressBar(dbd["ThisShiftProduction_variableBar"]) %>
<!-- OR -->
<%= Html.ProgressBar(dbd["ThisShiftProduction_variableBar"], "~/content/images/blue_1px.png", "productionBar_variableBar") %>
答案 1 :(得分:2)
您是否尝试过这样做
<img src="/content/images/blue_1px.png" class="productionBar_variableBar" style='width: <% =dbd["ThisShiftProduction_variableBar"] %>;'/>
注意单引号而不是样式属性
中的双引号