簡體   English   中英

在讀取視圖數據時如何添加選擇參數?

[英]How do I add select parameters when reading data for the View?

我正在asp.net中制作MVC 3 Web應用程序。 它應該像一個小社區,用戶可以在此相互發送消息(以后也可以發送給指定的人群)。 因此在我的數據庫中,我有表Users和Messages。 消息中的一行(一條消息)包含發送者和接收者(Users表的外鍵)以及一些其他信息,例如標題,發送日期,當然還有消息文本。

當用戶進入已登錄用戶的索引頁面時,我要顯示已發送給該用戶或該用戶發送的所有消息。 因此,當從“消息”表中讀取消息時,我想使用一個參數,即已登錄用戶的ID(我可以在控制器中訪問該ID)。 所以我有參數,但是在獲取結果時我不知道如何使用它。 我知道必須有一種正確執行此操作的方法,而不是放入一堆sql並以丑陋的方式在代碼中正確啟動連接。

如您現在可能看到的,表中的所有消息都將被檢索並發送到視圖以顯示給用戶。

盡管我一直在關注一些教程,但CommunityEntities行是整個Entity Framework的一部分,雖然不能確切確定它的工作原理,但是仍然不確定:

為一個ASP.NET MVC應用程序創建一個實體框架數據模型

Mvc-music-store-part-1 )。

UserController.cs:

...

CommunityEntities db = new CommunityEntities();

public ActionResult Index()
    {
        var messages = db.Messages.ToList();
        return View(messages);
    }

...

CommunityEntities.cs:

public class CommunityEntities : DbContext
{
    public DbSet<User> Users { get; set; }        
    public DbSet<Message> Messages { get; set; }
}

編輯:我確實使用db.Database.SqlQuery(...)嘗試了該操作,但這似乎是錯誤的,因為關鍵是要正確並“整潔”地執行此操作。 這是為了我的教育,我的老師會對應用程序的結構保持謹慎。

您需要一個where子句:

var messages = db.Messages.Where( m => m.SentById == id || m.SentToId == id ).ToList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM