, так что через несколько недель у меня есть голова вокруг asp.net mvc и преобразованы два веб-сайта. В дополнение к простому порту, некоторые рефакторинги имели чистое отношение к модели, контроллеру и коду зрения.Я использую asp.net mvc правильно?
Один образец, который я вижу, что я думаю, все еще нуждается в улучшении, заключается в следующем, и я хотел бы получить совет или отзыв по этим вопросам, так как я не уверен, насколько плохи эти запахи.
Проблема: HTML визуализации знаний в контроллере - его очень легко, чтобы ваш бизнес-логики генерировать кучу HTML и засунуть его в ViewData, а затем ваш вид будет куча кода, который выглядит следующим образом:
< `% = Html.Encode (ViewData [ "Название"])%>
<`% = Html.Encode (ViewData [ "Содержимое"])%>
< `% = Html .Encode (ViewData ["Footer"])%>
Какое оптимальное решение для этого? Я, очевидно, хочу избежать этой логики на мой взгляд? Должен ли я записывать данные до клиента и иметь эту «визуализацию» в классах 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();
мой вопрос заключается в том, что у меня есть код в контроллер, который знает HTML. я обновлю вопрос – leora