我試圖在C#Asp.net MCV Web應用程序父表中的數據4.如何顯示使用該數據在子表在asp.net MVC 4
我在我必須根據表「ReadNotifs」中的數據顯示錶「數據通知」的數據。
爲了說明這個問題,以下是詳細信息:
我在我的數據庫中的兩個表:聲明和ReadNotifs。
Table : Notifications Table : ReadNotifs
-------------------------- --------------------------
|NotificationID | int | |ReadNotifID | int |
|description | string | |userid | int |
|UserId | int | |NotificationID | int |
__________________________ __________________________
以上是相關機型:
public class Notification { public Notification() { this.ReplyNotifs = new HashSet<ReplyNotif>(); } [Key] public int NotificationID { get; set; } [Display(Name = "Comment")] public string description { get; set; } public int UserId { get; set; } public virtual UserProfile UserProfile { get; set; } public virtual ICollection<ReadNotif> ReadNotifs { get; set; } } public class ReadNotif { [Key] public int ReadNotifID { get; set; } public int userid { get; set; } public int NotificationID { get; set; } public virtual Notification Notification { get; set; } }
聲明和ReadNotifs表由關係一對多的聯繫。所以1通知可以被讀取(ReadNotif)幾次。
我希望我能有這樣的結果:
Table : Notifications Table : ReadNotifs
----------------------------------- -----------------------------------
|NotificationID|description|UserId| |ReadNotifID|userid|NotificationID|
| 1 | Post 1 | 50 | | 1 | 50 | 3 |
| 2 | Post 2 | 51 | | 2 | 50 | 1 |
| 3 | Post 3 | 52 | ___________________________________
| 4 | Post 4 | 53 |
___________________________________
Result that i want to display in my view:
Table : Notifications
-----------------------------------
|NotificationID|description|UserId|
| 2 | Post 2 | 51 |
| 4 | Post 4 | 53 |
___________________________________
記住:我會在一表「的通知」的基礎上表中的「ReadNotifs」的數據顯示數據。 所以,我想在NotificationID(通知)!= NotificationID(ReadNotifs)時顯示通知。
任何想法我應該怎麼做?
非常感謝。
編輯:大家好。我試過的東西:
我的視圖模型:
public class NotificationVM
{
public ReadNotif ReadNotif { get; set; }
public List<Notification> Notifications { get; set; }
}
我的控制器:
UserProfile user = db.UserProfiles.FirstOrDefault(u => u.UserName == User.Identity.Name);
var listreadnotifs = db.ReadNotifs
//.Where(u => u.userid == user.UserId)
.ToList();
if (listreadnotifs != null)
{
List<NotificationVM> result = new List<NotificationVM>();
foreach (var item in listreadnotifs)
{
NotificationVM model = new NotificationVM();
//model.ReadNotif = item;
model.Notifications = db.Notifications
.OrderByDescending(i => i.NotificationID)
.Where(u => !(u.NotificationID == item.NotificationID))
.Take(99)
.ToList();
result.Add(model);
}
return PartialView(result);
}
筆者認爲:
@foreach (var beta in Model)
{
foreach (var item in beta.Notifications)
{
@item.description
}
}
當我申請這個方法,讓我告訴你結果最後一個例子:
Table : Notifications Table : ReadNotifs
----------------------------------- -----------------------------------
|NotificationID|description|UserId| |ReadNotifID|userid|NotificationID|
| 1 | Post 1 | 50 | | 1 | 50 | 3 |
| 2 | Post 2 | 51 | | 2 | 50 | 1 |
| 3 | Post 3 | 52 | ___________________________________
| 4 | Post 4 | 53 |
___________________________________
Result :
(i have this result) (instead of this one)
Table : Notifications Table : Notifications
----------------------------------- -----------------------------------
|NotificationID|description|UserId| |NotificationID|description|UserId|
| 1 | Post 1 | 50 | | 2 | Post 2 | 51 |
| 2 | Post 2 | 51 | | 4 | Post 4 | 53 |
| 4 | Post 4 | 53 | ___________________________________
___________________________________
所以這個解決方案部分工作。
有什麼想法?
泰
要清楚,您是否希望顯示來自'通知'的所有記錄,除了那些在'ReadNotifs'(即未讀通知)中具有相應記錄的記錄? –
是的,一個理想? –
有點像'var result = notifications.Where(n =>!readNotifs.Any(r => r.NotificationID == n.NotificationID));' –