【发布时间】:2009-08-13 16:13:17
【问题描述】:
所以几周后,我开始了解 asp.net mvc 并转换了两个 webforms 网站。除了端口之外,还进行了一些重构以将模型、控制器和视图代码完全分开。
我认为我认为仍需要改进的一个模式如下,我想就这些项目提供建议或反馈,因为我不确定这些气味有多糟糕。
-
问题:控制器中的 HTML 渲染知识 - 很容易让您的业务逻辑生成一堆 HTML 并将其推入 ViewData,然后让您的视图成为一堆看起来像这样的代码:
`
`
`
对此最好的解决方案是什么?在我看来,我显然想避免这种逻辑?我是否应该将数据推送到客户端并在 HTMLHelper 类中使用这种“渲染”逻辑
我最终在构建 HTML 表格的控制器类中得到了这样的代码。 .
Stringbuilder gridBuilder = new StringBuilder();
while (index < objDS.Count)
{
// start of table row
gridBuilder.AppendLine("<tr align=\"center\">");
for (int column = 0; column < numberOfColumns; column++)
{
if (index < objDS.Count)
{
int record = (index) + ((objDS.CurrentPageIndex) * 12);
DataRow dr = photosDataSet.Tables[0].Rows[record];
gridBuilder.AppendLine("<td width=\"187.5\" valign=\"top\">");
int pictureNumber = Convert.ToInt32(dr.ItemArray[0].ToString());
string picnum = pictureNumber.ToString().PadLeft(3, '0');
int picNumberlink = pictureNumber - 1;
string image = "/pics/" + AlbumName + "/Thumbnails/" + AlbumName + "-pic" + picnum + ".jpg";
gridBuilder.AppendLine("<a id=\"picLinks_" + record + "\" class=\"picLinks\" href=''><img class=\"instant ishadow50\" src=\"" + image + "\"></img></a>");
gridBuilder.AppendLine("<br/>");
gridBuilder.AppendLine(dr.ItemArray[1].ToString());
gridBuilder.AppendLine("</td>");
}
index++;
}
gridBuilder.AppendLine("</tr>");
}
gridBuilder.AppendLine("</table>");
ViewData["Content"] = gridBuilder.ToString();
【问题讨论】:
标签: asp.net html asp.net-mvc