数週間後、私はasp.net mvcの周りに頭を持ち、2つのwebformsサイトを変換しました。ポートだけでなく、モデル、コントローラ、およびビューコードを別々にするためにリファクタリングをいくつか行いました。私は正しくasp.net mvcを使用していますか?
私はまだ改善が必要だと思う1つのパターンは、次のとおりです。私はこれらの匂いがどれほど悪いかわからないので、これらの項目に関する助言やフィードバックをしたいと思います。
問題:あなたのコントローラ内の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