C# &引用;序列不包含匹配元素“;在剃须刀模板中

C# &引用;序列不包含匹配元素“;在剃须刀模板中,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我正在尝试修复一个正常工作的网页,但现在不行 在图中可以看到,feiEvt.DefiniteEntriesDate存在并具有日期值 但是,当代码到达第95行时,关闭}失败,异常序列不包含匹配元素 如果我注释掉第91行到第96行,那么代码将在第90行失败,并带有feiEvt.EventTypeCode属性,但该属性也包含数据。当“Definite Entries”部分存在时,执行通过这一行 编辑:我还注释掉了屏幕截图中的第90行,同样的错误现在出现在第89行。这引用的是另一个对象,但是这个值@e

我正在尝试修复一个正常工作的网页,但现在不行

在图中可以看到,
feiEvt.DefiniteEntriesDate
存在并具有日期值

但是,当代码到达第95行时,关闭
}
失败,异常
序列不包含匹配元素

如果我注释掉第91行到第96行,那么代码将在第90行失败,并带有
feiEvt.EventTypeCode
属性,但该属性也包含数据。当“Definite Entries”部分存在时,执行通过这一行

编辑:我还注释掉了屏幕截图中的第90行,同样的错误现在出现在第89行。这引用的是另一个对象,但是这个值
@evt.ClassType
也有一个值-这绝对不是空值或缺少值的问题

我已经尝试将逻辑拆分为单独的行—获取日期,检查它是否为null,如果不是,则将其转换为“ShortDateString”并显示该字符串—但错误保持不变

我也尝试过(好几次!)清理并构建整个应用程序(这是解决这些奇怪问题的常用方法),但同样没有成功

有什么想法吗

    @using System
@using System.Activities.Statements
@using System.Collections.Generic
@using System.Linq
@using BeSfClient.DBModels;
@using FEIClient.Data
@using FEIClient.Entry
@using FEIEntryWeb.Helpers
@using SharedUtilities
@model FEIEntryWeb.Models.EntriesModel
@{
    ViewBag.Title = "Entries";
}

@section Scripts {
    <script src="@Scripts.Url("~/scripts/entries.js")"></script>
}

@section featured {
    <section class="featured">
        <div class="content-wrapper">
            @Html.ActionImage("_Entries", "Help",
                new { }, "~/Content/Images/help.png", "Members Help",
                new { @class = "helpLink" })
            <div class="title">
                <h1>@ViewBag.Title - @Model.Season</h1>
                <h2>@ViewBag.Message</h2>
            </div>

        </div>
    </section>
}

@using (Html.BeginForm("Entries", "Events", FormMethod.Post))
{
    @Html.DropDownListFor(i => i.BEMeetings, new SelectList(Model.BEMeetings.OrderBy(m => m.MeetingStartDate), "eventId", "MeetingName"))
    @*<input type="submit" name="action" value="Get Entries" />*@
    <button name="actionButton" value="GetEntries">Get Entries</button>

    @Html.CheckBoxFor(m => m.ShowAll, new { id = "showAll" })
    @Html.LabelFor(m => m.ShowAll, "Show All Events", new { style = "display:inline-block; padding-left: 10px" })


    if (Model.BEMeetings.Count > 0 && !string.IsNullOrWhiteSpace(Model.SelectedMeeting))
    {
        var meeting = Model.BEMeetings.First(m => m.EventId == Model.SelectedMeeting);
        var show = Model.FeiShow;

        <h3>@meeting.MeetingName - @Html.NullableDate(meeting.MeetingStartDate, "dd MMMM, yyyy")</h3>
        <ul>
            <li>Meeting ID: @meeting.EventId</li>
            <li>Venue: @meeting.VenueName</li>
            <li>FEI Show Code: @meeting.FeiShowCode</li>
        </ul>
        <div id="classesAccordion">

            @foreach (var evt in meeting.Classes)
            {
                // Get the entries for this class from the FEI Entries
                EntryListWS feiEvtEntries;
                Event feiEvt;
                List<BEEntry> beClass;
                Dictionary<string, Tuple<BEEntry, EntryAthleteWS>> matchedEntries;

                if (!Model.OrphanedFeiEntries.TryGetValue(evt.ClassId, out feiEvtEntries))
                {
                    feiEvtEntries = new EntryListWS();
                    feiEvtEntries.count = 0;
                    feiEvtEntries.entries = new EntryAthleteWS[] { };
                }

                if (!Model.OrphanedBeEntries.TryGetValue(evt.ClassId, out beClass))
                {
                    beClass = new List<BEEntry>();
                }

                if (!Model.MatchedEntries.TryGetValue(evt.ClassId, out matchedEntries))
                {
                    matchedEntries = new Dictionary<string, Tuple<BEEntry, EntryAthleteWS>>();
                }

                feiEvt = Model.FeiEvents[evt.ClassId];

                <h4>@evt.Description</h4>
                <div>
                    <ul>
                        <li>BE Class ID: @evt.ClassId</li>
                        <li>FEI Event ID: @evt.FeiEventCode</li>
                        <li>BE Event Type: @evt.ClassType</li>
                        <li>FEI Event Type: @feiEvt.EventTypeCode</li>
                        <li>
                            Definite Entries Date: @if (feiEvt.DefiniteEntriesDate != null)
                            {
                                <span>@(((DateTime)feiEvt.DefiniteEntriesDate).ToShortDateString())</span>
                            }
                        </li>
                        <li>
                            Open for Entry? <img src="~/Images/icons/fugue/icons/@((show.Events.First(e => e.EventCode == evt.FeiEventCode).OpenForEntries ?? false) ? "tick.png" : "cross.png")"
                                                 class="tooltip" title="Event Open For Entry?" />
                        </li>
                        <li>
                            Event History:
                            @{
                                var successResults = new[] { Results.SUCCESS, Results.OKD, Results.OKS };

                                if (evt.EventActions.Any(a => successResults.Contains(a.ActionResult)))
                                {
                                    @Html.ActionImage("ClassDetailsHistory",
                                        new { classId = evt.ClassId },
                                        "~/images/icons/aha/info.png", "Validated successfully",
                                        new { @class = "actionDetails" })
                                }
                                else if (evt.EventActions.Any())
                                {
                                    @Html.ActionImage("ClassDetailsHistory",
                                        new { classId = evt.ClassId },
                                        "~/images/icons/aha/warning.png", "Validated with errors",
                                        new { @class = "actionDetails" })
                                }
                                else
                                {
                                    @:No history recorded for this event
                                }
                            }
                        </li>
                    </ul>

                    <div class="entriesList">
                        <h4>Matched Entries</h4>

                        @if (matchedEntries.Count == 0)
                        {
                            <p>No Riders or Horses from British Eventing have been entered into this event yet.</p>
                        }
                        else
                        {
                            <div>
                                <button name="actionButton" value="ValidateList_@evt.ClassId" style="float:right">Validate Entry List</button>

                                <img src="~/Images/icons/aha/Filter.png" />:&nbsp;
                                <span class="customFilter gbrOnly" id="MatchedGbrOnly_@evt.ClassId"><img src="~/Images/icons/flags/GB.png" class="tooltip" title="GBR Only" /></span> |
                                <span class="customFilter notGbr" id="MatchedNotGbr_@evt.ClassId"><img src="~/Images/icons/flags/Not-GB.png" class="tooltip" title="Not GBR" /></span> |
                                <span class="customFilter allResults" id="MatchedAll_@evt.ClassId"><img src="~/Images/icons/fugue/icons/globe-green.png" class="tooltip" title="Everyone" /></span>

                                <table id="matchedEntriesTable_@evt.ClassId" class="entries dataTable">
                                    <thead>
                                        <tr>
                                            <th>Rider Name</th>
                                            <th>Rider FEI</th>
                                            <th>NF</th>
                                            <th>Horse Name</th>
                                            <th>Horse FEI</th>
                                            <th>Fei Status</th>
                                            <th class="enter">Action</th>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        @foreach (var entry in matchedEntries)
                                        {
                                            var beEntry = entry.Value.Item1;
                                            var feiEntry = entry.Value.Item2;
                                            var feiHorse = feiEntry.horses.FirstOrDefault(h => h.fei_id.Trim().Equals(beEntry.HorseFEI.Trim(), StringComparison.InvariantCultureIgnoreCase));

                                            var athleteNamesMatches = Model.CheckBeAndFeiAthleteNamesMatch(beEntry, feiEntry);
                                            var horseNameMatches = Model.CheckBeAndFeiHorseNamesMatch(beEntry, feiHorse);

                                            <tr>
                                                <td @if (!athleteNamesMatches) { @: class="error"
                                                    }>
                                                    @if (!athleteNamesMatches)
                                                    {
                                                        <span class="tooltip" title="@String.Format("{0} {1}", feiEntry.firstname, feiEntry.familyname)">@beEntry.RiderFirstName @beEntry.RiderFamilyName</span>
                                                        <!-- FEI: @feiEntry.firstname @feiEntry.familyname BE: @beEntry.RiderFirstName @beEntry.RiderFamilyName -->
                                                    }
                                                    else
                                                    {
                                                        @String.Format("{0} {1}", beEntry.RiderFirstName, beEntry.RiderName)
                                                    }
                                                </td>
                                                <td>
                                                   @Html.SalesforceLink(beEntry.RiderId, beEntry.RiderFEI)
                                                </td>

                                                <td>@beEntry.RiderNationality</td>
                                                <td @if (!horseNameMatches) { @: class="error"
                                                    }>
                                                    @if (!horseNameMatches)
                                                    {
                                                        <span class="tooltip" title="@feiHorse.name">@beEntry.HorseName</span>
                                                    }
                                                    else
                                                    {
                                                        @beEntry.HorseName
                                                    }
                                                </td>
                                                <td>
                                                    @Html.SalesforceLink(beEntry.HorseId, beEntry.HorseFEI)
                                                </td>

                                                <td>@feiEntry.status</td>
                                                <td class="enter">
                                                    <img src="~/images/icons/silk/delete.png" alt="Withdraw Entry"
                                                         id="Withdraw_@(beEntry.ClassId + "_" + @beEntry.EntryId)"
                                                         class="action" />
                                                    @if (beEntry.EntryActions.Any(a => a.ActionResult != Results.SUCCESS && a.ActionResult != Results.ATH_ALREADY_ENTERED))
                                                    {
                                                        @Html.ActionImage("EntryDetailsHistory",
                                                            new { classId = beEntry.ClassId, entryId = beEntry.EntryId },
                                                            "~/images/icons/aha/warning.png", "Entered with errors",
                                                            new { @class = "actionDetails tooltip" })
                                                        ;
                                                    }
                                                    else if (beEntry.EntryActions.Any())
                                                    {
                                                        @Html.ActionImage("EntryDetailsHistory",
                                                            new { classId = beEntry.ClassId, entryId = beEntry.EntryId },
                                                            "~/images/icons/aha/info.png", "Entered successfully",
                                                                 new { @class = "actionDetails tooltip" })
                                                        ;
                                                    }
                                                </td>
                                            </tr>
                                        }
                                    </tbody>
                                </table>
                            </div>
                        }

                        <h4>BE Entries</h4>
                        @if (beClass.Count > 0)
                        {
                            <div>
                                @*<input type="submit" value="Enter Selected Riders/Horses" name="ActionEnter_@evt.ClassId" style="float:right" />*@
                                <img src="~/Images/icons/aha/Filter.png" />:&nbsp;

                                <span class="customFilter gbrOnly" id="BeGbrOnly_@evt.ClassId"><img src="~/Images/icons/flags/GB.png" class="tooltip" title="GBR Only" /></span> |
                                <span class="customFilter notGbr" id="BeNotGbr_@evt.ClassId"><img src="~/Images/icons/flags/Not-GB.png" class="tooltip" title="Not GBR" /></span> |
                                <span class="customFilter validOnly" id="BeValidOnly_@evt.ClassId"><img src="~/Images/icons/fugue/icons/tick-button.png" class="tooltip" title="Valid Entries Only" /></span> |
                                <span class="customFilter feiPerson" id="BeFeiPerson_@evt.ClassId"><img src="~/Images/icons/misc/PersonInvalid.png" class="tooltip" title="Rider FEI Membership Issues" /></span> |
                                <span class="customFilter feiHorse" id="BeFeiHorse_@evt.ClassId"><img src="~/Images/icons/misc/HorseInvalid.png" class="tooltip" title="Horse FEI Membership Issues" /></span> |
                                <span class="customFilter allResults" id="BeAll_@evt.ClassId"><img src="~/Images/icons/fugue/icons/globe-green.png" class="tooltip" title="Everyone" /></span>

                                <button name="actionButton" value="ActionEnter_@evt.ClassId" style="float: right">Enter Selected Riders/Horses</button>

                                <table id="beEntriesTable_@evt.ClassId" class="entries dataTable">
                                    <thead>
                                        <tr>
                                            <th>Rider Name</th>
                                            <th>Rider FEI</th>
                                            <th>NF</th>
                                            <th>Horse Name</th>
                                            <th>Horse FEI</th>
                                            <th>BE Entry ID</th>
                                            <th class="enter">Enter<br />@Html.CheckBox("Enter_All_" + @evt.ClassId)</th>
                                        </tr>
                                    </thead>

                                    <tbody>
                                        @foreach (var entry in beClass)
                                        {
                                            var validForEntry = (!String.IsNullOrWhiteSpace(entry.RiderFEI)
                                                                 && !String.IsNullOrWhiteSpace(entry.HorseFEI)
                                                                 && !String.IsNullOrWhiteSpace(entry.RiderNationality)
                                                                 && entry.RiderNationality.Trim().Equals("GBR", StringComparison.InvariantCultureIgnoreCase)
                                                                 && entry.RiderFeiValid
                                                                 && entry.HorseFeiValid) ? "valid" : "";
                                            var feiAthleteMembership = (entry.RiderFeiValid) ? "" : "invalid";
                                            var feiHorseMembership = (entry.HorseFeiValid) ? "" : "invalid";
                                            <tr>
                                                <td>
                                                    @entry.RiderFirstName, @entry.RiderName
                                                </td>
                                                <td data-search="@feiAthleteMembership">
                                                    @if (!entry.RiderFeiValid)
                                                    {
                                                        <img src="~/images/icons/fugue/icons/cross-small.png" style="float: right; clear: right"
                                                             class="tooltip" title="No current FEI Membership" />
                                                    }
                                                    @Html.SalesforceLink(entry.RiderId, entry.RiderFEI)
                                                </td>
                                                <td>@entry.RiderNationality</td>
                                                <td>
                                                    @entry.HorseName
                                                </td>
                                                <td data-search="@feiHorseMembership" style="vertical-align: middle">
                                                    @if (!entry.HorseFeiValid)
                                                    {
                                                        <img src="~/images/icons/fugue/icons/cross-small.png" style="float: right"
                                                             class="tooltip" title="No current FEI Membership" />
                                                    }
                                                    @Html.SalesforceLink(entry.HorseId, entry.HorseFEI)
                                                </td>
                                                <td>@entry.EntryId</td>
                                                <td class="enter" data-search="@validForEntry">
                                                    @if (!String.IsNullOrWhiteSpace(validForEntry))
                                                    {
                                                        @Html.CheckBoxSimple("Enter_" + @evt.ClassId + "_" + entry.EntryId, new { })
                                                    }
                                                    @if (entry.EntryActions.Any(a => a.ActionResult != Results.SUCCESS && a.ActionResult != Results.ATH_ALREADY_ENTERED))
                                                    {
                                                        @Html.ActionImage("EntryDetailsHistory",
                                                            new { classId = entry.ClassId, entryId = entry.EntryId },
                                                            "~/images/icons/aha/warning.png", "Entered with errors",
                                                            new { @class = "actionDetails" })
                                                    }
                                                    else if (entry.EntryActions.Any())
                                                    {
                                                        @Html.ActionImage("EntryDetailsHistory",
                                                            new { classId = entry.ClassId, entryId = entry.EntryId },
                                                            "~/images/icons/aha/info.png", "Entered successfully",
                                                            new { @class = "actionDetails" })
                                                    }
                                                    @Html.ActionImage("EditEntry",
                                                            new { classId = entry.ClassId, entryId = entry.EntryId },
                                                            "~/images/icons/silk/cog_edit.png", "Edit FEI Details",
                                                         new { @class = "actionDetails tooltip" })
                                                </td>
                                            </tr>
                                        }
                                    </tbody>
                                </table>

                            </div>
                        }
                        else
                        {
                            <p>No BE Entries in database, or all have been entered into FEI Database (see Matched Entries above)</p>
                        }

                        <h4>FEI Entries</h4>
                        @if (feiEvtEntries.entries.Length > 0)
                        {
                            if (feiEvtEntries.entries.Length == 1 && feiEvtEntries.entries[0].fei_id == 0)
                            {
                                <p>Event not open for entries.</p>
                            }
                            else
                            {
                                <div>
                                    <img src="~/Images/icons/aha/Filter.png" />:&nbsp;
                                    <span class="customFilter gbrOnly" id="FeiGbrOnly_@evt.ClassId"><img src="~/Images/icons/flags/GB.png" class="tooltip" title="GBR Only" /></span> |
                                    <span class="customFilter notGbr" id="FeiNotGbr_@evt.ClassId"><img src="~/Images/icons/flags/Not-GB.png" class="tooltip" title="Not GBR" /></span> |
                                    <span class="customFilter allResults" id="FeiAll_@evt.ClassId"><img src="~/Images/icons/fugue/icons/globe-green.png" class="tooltip" title="Everyone" /></span>
                                    <table id="feiEntriesTable_@evt.ClassId" class="entries dataTable">
                                        <thead>
                                            <tr>
                                                <th>Rider Name</th>
                                                <th>Rider FEI</th>
                                                <th>NF</th>
                                                <th>Horse Name</th>
                                                <th>Horse FEI</th>
                                                <th>Fei Status</th>
                                            </tr>
                                        </thead>
                                        <tbody>
                                            @foreach (var entry in feiEvtEntries.entries.ToList())
                                            {
                                                foreach (var horse in entry.horses.ToList())
                                                {
                                                    <tr>
                                                        <td>@entry.firstname @entry.familyname</td>
                                                        <td>@entry.fei_id</td>
                                                        <td>@entry.competing_for_nf</td>
                                                        <td>@horse.name</td>
                                                        <td>@horse.fei_id</td>
                                                        <td>@horse.status</td>
                                                    </tr>
                                                }
                                            }
                                        </tbody>
                                    </table>
                                </div>
                            }
                        }
                        else
                        {
                            <p>No entries recorded with FEI yet</p>
                        }
                    </div>
                </div>
            }
        </div>
    }
    else
    {
        <p>Select a Meeting to view its Entries</p>
    }
}
@使用系统
@使用System.Activities.Statements
@使用System.Collections.Generic
@使用System.Linq
@使用BeSfClient.DBModels;
@使用FEIClient.Data
@使用FEIClient.Entry
@使用FEIEntryWeb.Helpers
@使用共享义务
@model FEIEntryWeb.Models.EntriesModel
@{
ViewBag.Title=“条目”;
}
@节脚本{
}
@特色栏目{
@ActionImage(“\u条目”,“帮助”,
新建{},“~/Content/Images/help.png”,“成员帮助”,
新建{@class=“helpLink”})
@ViewBag.Title-@Model.seasure
@查看包。留言
}
@使用(Html.BeginForm(“条目”、“事件”、FormMethod.Post))
{
@DropDownListFor(i=>i.BEMeetings,新选择列表(Model.BEMeetings.OrderBy(m=>m.MeetingStartDate),“eventId”,“MeetingName”))
@**@
获取条目
@CheckBoxFor(m=>m.ShowAll,new{id=“ShowAll”})
@LabelFor(m=>m.ShowAll,“显示所有事件”,新的{style=“display:inline block;padding left:10px”})
if(Model.BEMeetings.Count>0&&!string.isNull或空白(Model.SelectedMeeting))
{
var meeting=Model.BEMeetings.First(m=>m.EventId==Model.SelectedMeeting);
var show=Model.FeiShow;
@meeting.MeetingName-@Html.NullableDate(meeting.MeetingStartDate,“dd-MMMM,yyyy”)
  • 会议ID:@Meeting.EventId
  • 地点:@meeting.VenueName
  • 展会代码:@meeting.FeiShowCode
@foreach(会议类中的var evt) { //从FEI条目中获取该类的条目 费维滕特里斯入口酒店; 事件feiEvt; 列表类; 词典匹配; 如果(!Model.OrphanedFeiEntries.TryGetValue(evt.ClassId,out-FeiEventries)) { feieventries=newentrylistws(); feieventries.count=0; feieventries.entries=newentryathletews[]{}; } if(!Model.OrphanedBeEntries.TryGetValue(evt.ClassId,out beClass)) { beClass=新列表(); } 如果(!Model.MatchedEntries.TryGetValue(evt.ClassId,out MatchedEntries)) { matchedEntries=新字典(); } feiEvt=Model.FeiEvents[evt.ClassId]; @evt.说明
  • BE Class ID:@evt.ClassId
  • FEI事件ID:@evt.FeiEventCode
  • BE事件类型:@evt.ClassType
  • FEI事件类型:@feiEvt.EventTypeCode
  • 确定条目日期:@if(feiEvt.DefiniteEntriesDate!=null) { @(((DateTime)feiEvt.DefiniteEntriesDate.ToSortDateString()) }
  • 打开输入?e.EventCode==evt.feiventcode).OpenForEntries?false)?“tick.png”:“cross.png”)“ class=“tooltip”title=“事件打开以供输入?”/>
  • 事件历史记录: @{ var successResults=new[]{Results.SUCCESS,Results.OKD,Results.OKS}; if(evt.EventActions.Any(a=>successResults.Contains(a.ActionResult))) { @ActionImage(“ClassDetailsHistory”, 新的{classId=evt.classId}, “~/images/icons/aha/info.png”,“已成功验证”, 新的{@class=“actionDetails”}) } else if(evt.EventActions.Any()) { @ActionImage(“ClassDetailsHistory”, 新的{classId=evt.classId}, “~/images/icons/aha/warning.png”,“已验证错误”, 新的{@class=“actionDetails”}) } 其他的 { @:没有历史记录
                    <li>
                        Definite Entries Date: @if (feiEvt.DefiniteEntriesDate != null)
                        {
                            <span>@(((DateTime)feiEvt.DefiniteEntriesDate).ToShortDateString())</span>
                        }
                    </li>
                    <li>
                        Open for Entry? <img src="~/Images/icons/fugue/icons/@((show.Events.First(e => e.EventCode == evt.FeiEventCode).OpenForEntries ?? false) ? "tick.png" : "cross.png")"
                                             class="tooltip" title="Event Open For Entry?" />
                    </li> 
    
    @(((DateTime)feiEvt.DefiniteEntriesDate).ToShortDateString())
    
    @((show.Events.First(e => e.EventCode == evt.FeiEventCode).OpenForEntries ?? false) ? "tick.png" : "cross.png")