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" />:
<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" />:
<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" />:
<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")