저는 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 도우미를 사용하여 간단한보기 모델을 전달하여보기에 간단한 논리를 캡슐화하십시오. – JcMaltaDev