输入:
Id, PartId, Name
1, 1, Head
1, 2, body
1, 3, Tail
2, 1, Head
2, 2, Leg
输出显示:
- Head, Body, Tail [Delete(1)]
- Head, Leg [Delete(2)]
我的代码:
<ol>
<%
int prev = -1;
foreach (var item in t)
{
if(prev != item.ResponseId){
if (prev != -1)
{%>
<%= Html.ActionLink("[replacethis]", "RemoveResponse", new { id = item.ResponseId })
.Replace("[replacethis]", "<img src=\"../../Content/images/delete_icon.gif\" class=\"borderlessImage\" title=\"Remove\"/>")%>
</li>
<%} %>
<li>
<% }
else {
%>, <%
} %>
<%= Html.Encode(item.ResponsePartValue) %>
<% prev = item.ResponseId;
} %>
<%= Html.ActionLink("[replacethis]", "RemoveResponse", new { id = prev })
.Replace("[replacethis]", "<img src=\"../../Content/images/delete_icon.gif\" class=\"borderlessImage\" title=\"Remove\"/>")%>
</li>
</ol>
问题:
答案 0 :(得分:1)
好吧,首先你可以创建一个为你呈现图片链接的HtmlHelper
,而不是先生成锚标签,然后用图片替换它们的内容。
看看here。
每次您需要输出一些文字时,您也不必使用<%=
。如果您已经有开放代码块(即<%
),那么您可以使用Response.Write
方法输出您想要的内容。在像你这样的情况下,这看起来很可能比%> <%=
更好。
尽管如此,我承认我并不完全知道你在这里列出的内容以及你希望它如何展示。但是按照你的算法,我想这就是我要做的:
<ol>
<%
int prev = -1;
foreach (var item in t) {
if(prev != item.ResponseId) {
if (prev != -1) {
Response.Write(Html.ImageLink("../../Content/images/delete_icon.gif", "RemoveResponse", new { id = item.ResponseId, @class ="borderlessImage", title = "Remove" }) + "</li>");
}
Response.Write("<li>");
}
else {
Response.Write(", ");
}
prev = item.ResponseId;
Response.Write(Html.Encode(item.ResponsePartValue));
} %>
<%= Html.ImageLink("../../Content/images/delete_icon.gif", "RemoveResponse", new { id = prev, @class ="borderlessImage", title = "Remove" }) %>
</li>
</ol>
答案 1 :(得分:0)
我会将所有内容放入字典中,这会使您的逻辑更符合逻辑: - )
类似的东西:
IDictionary<int, List<Part>> partsDictionary = new Dictionary<int, List<Part>>();
如果int键是您的id,那么List类型的值将是您的各个部分。
然后将逻辑放入HtmlHelper扩展名。
E.g。 (虽然我不知道你在做什么,查看代码与你顶部的db模型不匹配。这应该给你一个想法)
public static string PartsList(this HtmlHelper html, IDictionary<int, List<Part>> partsDictionary)
{
if (partsDictionary.Count == 0)
return "";
StringBuilder toReturn = new StringBuilder("<ol>");
foreach (KeyValuePair<int, List<Part>> kvp in Model.PartsDictionary)
{
toReturn.Append("<li>");
//Individual part links
IList<string> partsLinks = new List<string>();
foreach (Part part in kvp.Value)
partsLinks.Add(html.ActionLink(part.PartName, "ActionName", new { @id = part.Id }));
toReturn.Append(string.Join(", ", partsLinks.ToArray()));
//Part category(?) link
toReturn.Append(html.ActionLink("Delete", "ActionName", new { @id = kvp.Key }));
toReturn.Append("</li>");
}
toReturn.Append("</ol>");
return toReturn.ToString();
}
或类似的东西; - )
HTHS
查尔斯