簡體   English   中英

Razor C#-從數據庫獲取數據

[英]Razor C# - Get data from database

我正在使用WebMatrix,已經創建了一個數據庫,並在表中放置了幾行數據。 我可以連接到它並使用WebGrid獲取數據,但是它僅提供了一種使用表輸出數據的方法。

這是我的“ shows.cshtml”代碼:

@{
    var db = Database.Open("TVPort");
    var shows_data = db.Query("SELECT * FROM shows");
    var shows_grid = new WebGrid(source: shows_data);
}

我想做的是枚舉查詢返回的每一行,並對每一列的值做我想做的任何事情。 但是WebGrid僅允許您將數據輸出到表中。 我今天才開始使用WebMatrix和Razor語法。

另外(這里的附帶問題,認為這不足以解決自己的問題),是否可以為我的“ shows.cshtml”頁面制作C#代碼文件? 在Visual Web Developer 2010中,每個頁面都有一個“ page.aspx”文件和一個“ page.aspx.cs”,其中的“ page.aspx.cs”文件使您可以在頁面中使用自定義功能或執行任務頁面加載時。 在WebMatrix中使用CSHTML是否有類似的行為? 還是所有代碼都應該與實際頁面內聯?

使用數據時找到了答案:ASP.net

@foreach(var row in db.Query("SELECT * FROM shows")) {
  <em>@row.title</em> - Cast: @row.cast
}

您正在以這種錯誤的方式走! MVC模式具有將數據邏輯與實際內容分離的優勢,現在您正在View中檢索新數據(這對Controller並沒有太多控制)!

請訪問http://www.asp.net/mvc,以獲取有關如何使用ASP.Net MVC以及如何構造類和文件的出色教程(它將回答您的兩個問題)。 如果您以前使用PHP並直接在同一頁中直接編寫每個查詢,則似乎有些過頭了,但是請相信我,使用ASP.Net MVC創建的代碼將更加整潔並且易於維護。

關於您的附帶問題,我想說的是,使用Razor框架,您將無法獲得代碼隱藏文件。 它將服務器端代碼和客戶端代碼混合在一起。 如果您希望有一個代碼隱藏文件,則可以使用Asp.net網頁,而無需在Visual Studio上使用剃刀視圖引擎。

對於附帶的問題,我相信@function {“在此塊內插入代碼”}將允許您在頁面內創建自定義函數。 希望這對其他可能有類似問題的人有所幫助,並在這里結束。 信不信由你,@ http://www.asp.net/get-started上有一些很棒的文檔。 只需閱讀教程即可。

暫無
暫無

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

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