に基づいてすべてのレコードをカウントするために、私はこれを持っている:ループは、パラメータ
foreach(var item in db.AInfoes)
{
if (db.MRecords.Any(s => s.AID == item.ID))
{
ViewBag.RecordExists = true;
}
else if(!db.MRecords.Any(s => s.AID == item.ID))
{
ViewBag.NoRecordExists = true;
}
}
これの目的は、私の.cshtml
Indexビュー内のリンクを非表示にすることです。 AInfoes
テーブルをループし、外部キーAID
に一致するテーブル内のレコードが存在するかどうかを、プライマリキーID
と一致するかどうか確認します。デフォルトインデックスビューで次に
は、各レコードのEdit
、Details
、Delete
リンクがあります。 ViewBag.NoRecordExists = true
の場合、表示するのはEdit
のリンクのみです。これがないため任意のMRecords
場合にID
マイCSHTML:
@if (!ViewBag.RecordExists)
{
@Html.ActionLink("Edit Maintenance Record", "Edit", "MaintenanceRecords", new { id = item.ID })
}
@if (ViewBag.NoRecordExists == true)
{
@Html.ActionLink("Edit Maintenance Record", "Edit", "MaintenanceRecords", new { id = item.ID })
}
私はわざと
ID
が10に等しいすべての
MRecords
を削除することによってこれをテストして、私の
A&Mレコードデシベルで
..しかし、私が行ったとき私のインデックスビューは、リンクはすべてのレコードのためにそこにあった..再び私は0があるレコードのためのリンクを表示したい0 MRecords
助けていただければ幸いです。
私はあなたが提案された変更を行いました。私の '.cshtml'に' @if(recordExists) { @ Html.ActionLink( "メンテナンスレコードの編集"、 "MRecords"、新しい{id = item.ID}) } 'ID'が10であるすべてのMRecordを意図的に削除しました。** AInfoes **のMy * Index * Viewは、そのレコードの* Edit *リンクのみを表示する必要があります。しかし、代わりに** AInfoes **テーブルのすべてのレコードのEditリンクを表示しています(たとえそれらがMRecordsを持っていても) –
これは 'ViewBag.RecordExists'がnullに評価されている可能性があります。単純にブールにキャストすることはできません(ブール型以外に設定されています)。どちらの場合でも、ビュー内のそのコード行はフォールバックとして 'false'と評価されます。 –
'var aInfoesIds = db.AInfoes.Select(x => x.ID).ToList();' 5つの値 '6,7,8,9,10 'を保持します。' ViewBag.RecordExists = db.MRecords.Any (x => aInfoesIds.Contains(x.AID)); '10の' MRecords'がない場合でもtrueと評価されます。 –