2013-10-06 61 views
1

我有一個Microsoft Access數據庫(.accdb)充滿了我想在我的.cshtml剃鬚刀頁面上顯示的值。我需要打開連接,然後用值創建表。使用Access數據庫和剃鬚刀mvc4

我認爲,該表將是這樣的:

<table> 
     <thead> 
      <tr> 
       <th>Name</th> 
       <th>Address</th> 
       <th>Address 2</th> 
       <th>Field of Work</th> 
      </tr> 
     </thead> 

     <tbody> 
      @foreach (var row in _____.Query(____)) 
      { 
       <tr> 
        <td>@row.name</td> 
        <td>@row.address</td> 
        <td>@row.address2</td> 
        <td>@row.field</td> 
       </tr> 
      } 
     </tbody> 
    </table> 

,但我一直沒能正確地打開連接。

請教?

回答

3

如果您正在使用Access,您應該放在App_Data文件數據庫文件,並在你的web.config文件中指定的連接字符串:

<connectionStrings> 
    <add name="MyConnection" 
     connectionString="Provider="Microsoft.ACE.OleDb.12.0;Data Source=|DataDirectory|MyDatabase.accdb;" 
     providerName="System.Data.OleDb" /> 
</connectionStrings> 

|DataDirectory|是一種特殊的短切解析到的位置App_Data文件夾。

當您使用數據庫幫手,你通過在連接字符串的名稱:

var db = Database.Open("MyConnection"); 
var data = db.Query("SELECT * FROM MyTable"); 
... 
... 
<tbody> 
    @foreach (var row in data){ 
     <tr> 
      <td>@row.name</td> 
      <td>@row.address</td> 
      <td>@row.address2</td> 
      <td>@row.field</td> 
     </tr> 
    } 
</tbody> 

但是,如果你使用MVC,數據庫打開和查詢不應該在視圖中發生。您應該在控制器中執行該操作,或者更好的是在數據層中執行該操作。或者,您可以查看數據訪問代碼屬於視圖的ASP.NET網頁:http://asp.net/web-pages

+0

它給了我一個「名字」數據庫「在當前上下文中不存在」。我認爲我錯過了一些東西。另外,你能否解釋爲什麼數據庫的開放和查詢應該發生在另一層,而不是視圖? –

+0

我得到了解決的名字。我想知道的是,將它放在不同的層中有什麼好處?感謝所有的幫助! –

+0

使用MVC框架的重點在於利用Views與Controllers分開的事實,並且兩者都與模型(數據訪問發生的地方)是分開的。這使代碼管理和測試變得更容易。這些都是相當先進的功能,所以如果你不需要它們,我推薦網頁框架。合作很簡單。 –