私はMVCを初めて使っています。トランザクションの一覧を表示する画面を構築しています。したがって、私のコントローラでは、リスト<> TransactionLinesを構築します。私はそれを私のビューに渡します。私のビューは、次のようなコードを持っています:ASP.Net MVC - テーブルの作成
<table width="1000" border="0" cellspacing="1" cellpadding="2">
<tr class="headerRow">
<td>
Transaction Date
</td>
<td>
Payee
</td>
<td align="right">
Amount
</td>
<td>
Category
</td>
<td>
Cost Center
</td>
<td>
Budget Assignment
</td>
<td>
</td>
</tr>
<%
decimal runningTotal = 0;
int rowNum = 0;
foreach (var trans in Model)
{
rowNum++;
runningTotal += trans.TotalAmount;
if (trans.IsSplit == false)
{
foreach (var line in trans.Transactions)
{%>
<tr <% if(rowNum % 2 == 0) { %> class="alternateRow" <%}%>>
<td>
<%=trans.TransactionDate.ToShortDateString()%>
</td>
<%-- <td>
<%=trans.IsCredit ? "CR" : "DR"%>
</td>
--%> <td>
<%=trans.Payee %>
</td>
<td align="right" <% if(trans.IsCredit==false) { %>class="debitCell" <% }%>>
<% =String.Format("{0:C2}", line.Amount)%>
</td>
<td>
<%=String.Format("{0} - {1}", line.Category, line.SubCategory)%>
</td>
<td>
<%=line.CostCenter%>
</td>
<td>
<%=line.Budget%>
</td>
<td>
<font color="gray">
<%=String.Format("{0:C2}", runningTotal)%></font>
</td>
</tr>
<%
}
}
else
{ %>
<tr <% if(rowNum % 2 == 0) { %> class="alternateRow" <%}%>>
<td>
<%=trans.TransactionDate.ToShortDateString()%>
</td>
<%-- <td>
<%=trans.IsCredit ? "CR" : "DR"%>
</td>
--%> <td>
<%=trans.Payee %>
</td>
<td align="right">
<%=String.Format("{0:C2}", trans.TotalAmount)%>
</td>
<td>
<%=trans.Transactions[0].Category + " ...[More]" %>
</td>
<td>
<%=trans.Transactions[0].CostCenter + "...[More]" %>
</td>
<td>
</td>
<td>
<font color="gray">
<%=String.Format("{0:C2}", runningTotal)%></font>
</td>
</tr>
<%}
}%>
<tr>
<td colspan="3" align="right">
<strong>
<%=runningTotal.ToString("C2") %></strong>
</td>
</tr>
</table>
これは、乱雑に見えるかもしれませんし、デバッグする悪夢です。また、私はそれを続行するのは難しいでしょう新しい要件があります。
これを行うより良い方法はありますか?
私はあなたのプロジェクトにそれほど遠すぎない場合は、Razorビューエンジンを使用することをお勧めします。構文ははるかにクリーンです。 コントローラでテキスト出力を準備し、HTMLヘルパーを使用してシンプルなView Modelを渡して、ビュー内のより単純なロジックをカプセル化することも検討してください。 – JcMaltaDev