我正尝试在局部视图中的表的两列中显示我的数据(图像)。下面的代码似乎不起作用,因为它在自己的行中显示每个图像。我遗漏了什么?
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%@ Import Namespace="ULS_Site.Models"%>
<%var alternating = false;%>
<table>
<% foreach (var item in ViewData.Model as IEnumerable<image>) %>
<%{%>
<%if (!alternating) %>
<%{ %>
<tr>
<%}; %>
<td>
<a href="<%= item.image_path %>" target="_blank" >
<img src="<%= item.image_path %>" alt=" " width="100" />
</a>
</td>
<%if (!alternating) %>
<%{ %>
</tr>
<%}; %>
<%alternating = !alternating;%>
<%}%>
</table>发布于 2009-11-08 02:27:57
<%if (alternating) %>
<%{ %>
</tr>
<%}; %>编辑:关闭tr时,您需要反转条件。
在执行行alternative = !alternating;之前,这不会关闭tr。
EDIT2:另外,当您还处于代码模式时,为什么要打开和关闭每一行上的<%=和%>?
也就是说,没有一种干净的方式来写它吗?
<%if (alternating)
{%>
</tr>
<%}; %>发布于 2009-11-08 05:30:54
我推荐一种可读性驱动的方法。除了这些解决方案之外,您还可以使用list和display来显示安莉标签中的每个项目,以便更好地观察关注点分离规则。一些基于标准的CSS和少量的jQuery可以保持代码的小巧和易读性:
<ul>
<% foreach (var item in ViewData.Model as IEnumerable<image>) { %>
<li>
<a href="<%= item.urlPath %>">
<img src="<%= item.imagePath %>" alt="" /></li>
<% } %>
</ul>CSS is可以像这样简单:
ul {
width:200px; /* twice the individual LI width */
}
ul li {
height:60px;
width:100px;
margin:0;
padding:0;
float:left;
list-style-type:none;
}现在您已经得到了原始输出和结构化处理,一个小的jQuery就可以满足您的备用显示需求。这将为您提供两个垂直列:
<script type="text/javascript">
$(function() {
$("li:odd").css("background-color", "#F00");
});
</script>稍有不同的jQuery选择器可以在交替的水平行上绘制颜色。
发布于 2009-11-08 02:37:01
尝试这样做,这将解决您在表中呈现每行两列的问题。
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%@ Import Namespace="ULS_Site.Models"%>
<%var alternating = true;%>
<table>
<% foreach (var item in ViewData.Model as IEnumerable<image>) %>
<%{%>
<%if (alternating) %>
<%{ %>
<tr>
<%}; %>
<td>
<a href="<%= item.image_path %>" target="_blank" >
<img src="<%= item.image_path %>" alt=" " width="100" />
</a>
</td>
<%if (!alternating) %>
<%{ %>
</tr>
<%}; %>
<%alternating = !alternating;%>
<%}%>
</table>https://stackoverflow.com/questions/1693933
复制相似问题