我正在建立一个网站,显示来自定制的Event类的一些信息,其中包含一些数据,包括时间戳,字符串,列表等。
在我看来,我有一个模型,其中包含一个包含事件列表的对象。我遍历列表并为每个事件显示它包含的数据。这意味着我的代码中有很多@Model.IntermediateClass.EventList[eventListIndex].propertyToDisplay
,它不是很易读,但工作得很好。
为了提高可读性,在我的for循环中,我正在创建一个变量currentEvent并让它包含@ Model.IntermediateClass.EventList [eventListIndex],这样我就可以拥有currentEvent.propertyToDisplay
,看起来更好看。我在循环中定义它,以便我可以访问事件的索引。
然而,当我这样做时,我得到了最普遍的Razor错误:“Razor编译错误。我们尝试过,我们确实做到了,但我们无法编译您的视图。”我认为这是因为变量类型是我的自定义Event类,因为我还有一个整数变量保存列表中的事件数,并且该变量编译并且工作得很好。我知道我的变量类型是正确的,因为如果我没有正确定义它,我会得到一个更具体的错误抱怨该类型。
此外,包括文件顶部的任何using语句(如@{using statements}
)也会导致编译器错误。在我的变量声明中,它需要一个using语句,而是内联指定我正在使用的内容,同时也是烦人的冗长。
有谁知道可能导致此错误的原因是什么?虽然重构我的代码并不是技术上必须正常工作,但我很沮丧的是,这种简单的清理方法不起作用。
如果有人能帮助提供一点清晰度,我将非常感激。 提前谢谢!
编辑:这是我的相关剃刀代码:
@{
Layout = "Layout/MasterTabs.cshtml";
}
@section EventTableContent {
<!--Table of event summary info-->
<table>
<tr>
<th class="col_index" rowspan="2">Event #</th>
<th class="col_timestamp" rowspan="2">Timestamp</th>
<th class="col_data" colspan="2">Event Data</th>
<th class="break_lines" rowspan="2">Raw Log Line</th>
</tr>
<tr>
<th class="col_data">Label</th>
<th class="col_data">Description</th>
</tr>
@for (var eventListIndex = 0; eventListIndex < @Model.Analysis.OrderInformation.EventList.Count; eventListIndex++)
{
//Symbotic.LifeOfOrder.Models.Event.Event currentEvent = @Model.Analysis.OrderInformation.EventList[eventListIndex];
int numberOfDataItems = @Model.Analysis.OrderInformation.EventList[eventListIndex].DataList.Count;
<tr>
@if (numberOfDataItems == 1)
{
<td class="col_index centered"><a name="@eventListIndex.ToString()">Event @Model.Analysis.OrderInformation.EventList[eventListIndex].Index</a></td>
<td class="column_timestamp centered">@Model.Analysis.OrderInformation.EventList[eventListIndex].Timestamp</td>
<td class="column_label">@Model.Analysis.OrderInformation.EventList[eventListIndex].DataList[0].Label</td>
<td class="column_description">@Model.Analysis.OrderInformation.EventList[eventListIndex].DataList[0].Description</td>
<td>@Model.Analysis.OrderInformation.EventList[eventListIndex].RawLogLine</td>
}
else if (numberOfDataItems > 1)
{
<td class="col_index centered" rowspan="@numberOfDataItems.ToString()">Event @Model.Analysis.OrderInformation.EventList[eventListIndex].Index</td>
<td class="column_timestamp centered" rowspan="@numberOfDataItems.ToString()">@Model.Analysis.OrderInformation.EventList[eventListIndex].Timestamp</td>
<td class="column_label">@Model.Analysis.OrderInformation.EventList[eventListIndex].DataList[0].Label</td>
<td class="column_description">@Model.Analysis.OrderInformation.EventList[eventListIndex].DataList[0].Description</td>
<td rowspan="@numberOfDataItems.ToString()">@Model.Analysis.OrderInformation.EventList[eventListIndex].RawLogLine</td>
}
else
{
<td class="col_index centered">Event @Model.Analysis.OrderInformation.EventList[eventListIndex].Index</td>
<td class="column_timestamp centered">@Model.Analysis.OrderInformation.EventList[eventListIndex].Timestamp</td>
<td class="column_label"></td>
<td class="column_description"></td>
<td>@Model.Analysis.OrderInformation.EventList[eventListIndex].RawLogLine</td>
}
</tr>
for (var dataListItems = 1; dataListItems < numberOfDataItems; dataListItems++)
{
<tr>
<td class="column_label">@Model.Analysis.OrderInformation.EventList[eventListIndex].DataList[dataListItems].Label</td>
<td class="column_description">@Model.Analysis.OrderInformation.EventList[eventListIndex].DataList[dataListItems].Description</td>
</tr>
}
}
</table>
}
整个部分适合我单独制作的主布局