剃刀不编译用户定义的变量C#

时间:2016-07-27 16:49:52

标签: c# asp.net-mvc razor

我正在建立一个网站,显示来自定制的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>

}

整个部分适合我单独制作的主布局

0 个答案:

没有答案