2012-11-15 43 views
0

我對ASP.NET MVC有一些經驗,但是因爲幾個星期我正在爲Orchard開發一個模塊。爲什麼在Orchard中使用ContentParts?

我無法理解的是,你幾乎被授權在Orchard中使用內容部件或內容類型,而我只是想從數據庫中獲取我的數據,而不是在某篇文章中顯示。

這是爲什麼?有沒有一種方法來建立一個模塊,你應該這樣做在ASP.NET MVC,而不使用所有的果園的東西?我一直在看幾個教程,但他們都使用部件和驅動程序等。

編輯:

Machine.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

namespace PowerAll.Voorraad.Models 
{ 
    public class MachineRecord 
    { 
    public int Id { get; set; } 
    public int MachineNumber { get; set; } 
    public string Title { get; set; } 
    public string Description { get; set; } 
    public char PriceType { get; set; } 
    public decimal Price { get; set; } 
    public int Year { get; set; } 
    } 
} 

Migrations.cs

namespace PowerAll.Voorraad 
{ 
    public class Migrations : DataMigrationImpl 
    { 
    public int Create() 
    { 
     SchemaBuilder.CreateTable("MachineRecord", table => table 
     .Column<int>("Id", column => column.PrimaryKey().Identity()) 
     .Column<int>("MachineNumber", column => column.NotNull()) 
     .Column<string>("Title", column => column.NotNull().WithLength(40)) 
     .Column<string>("Description", column => column.WithLength(70)) 
     .Column<char>("PriceType", column => column.NotNull().WithLength(1)) 
     .Column<decimal>("Price", column => column.NotNull()) 
     .Column<int>("Year", column => column.WithLength(4)) 
    ); 

     // Return the version that this feature will be after this method completes 
     return 1; 
    } 
    } 
} 

MachineController.cs

namespace PowerAll.Voorraad.Controllers 
{ 
    [Themed] 
    public class MachineController : Controller 
    { 
    private readonly IRepository<MachineRecord> machineRecords; 

    public MachineController(IRepository<MachineRecord> MachineRecords) { 
     machineRecords = MachineRecords; 
    } 

    public ActionResult Index() { 
     // Here we're just grabbing records based on some fictional "Deleted" flag 
     var items = machineRecords.Table; 
     // Items is now an IEnumerable<MachineRecord> 

     return View(items); 
    } 
    } 
} 

Index.cshtml

@model IEnumerable<PowerAll.Voorraad.Models.MachineRecord> 

<ul> 
    @foreach(var item in Model) { 
     <li>@item.Id</li> 
     <li>@item.MachineNumber</li> 
     <li>@item.Title</li> 
     <li>@item.Description</li> 
     <li>@item.PriceType</li> 
     <li>@item.Price</li> 
     <li>@item.Year</li> 
    } 
</ul> 
Hello from view 

'你好從視圖' 是可見的,所以我真的得到我的看法。

+1

Yo你真的不是「要求」在烏節路使用內容。你可以非常高興地創建一個控制器和代碼,就好像你正在處理任何其他的ASP MVC項目一樣,但是如果你實際上不想使用任何內容,我會質疑你使用框架來創建內容驅動的網站管理功能。 – mdm

+0

我們有一個大的(本地)應用程序,公司註冊所有機器庫存。這些機器每天晚上都會上傳到網站的數據庫,這樣網站正在更新。所以,因爲用戶永遠不會觸摸網站上的任何內容,但會在本地更改其股票,我不需要編輯在網站上創建記錄,我只需要顯示它。我們希望使用Orchard來構建一個漂亮的網站,並在其周圍放置一些新聞等內容,這就是爲什麼我要爲Orchard製作一個模塊,但沒有提供所有這些功能對我來說毫無用處。 – avb

+0

你能解釋我如何從數據庫中獲取數據嗎?或者參考一個教程,在沒有所有Orchard的情況下完成這個任務?感謝您的回答 – avb

回答

1

假設您的所有記錄都是通過Orchard遷移創建的,那麼您可以使用IRepository<>界面訪問您的數據。

E.g.

RecordController.cs:

public class RecordController : Controller { 
    private readonly IRepository<CustomRecord> _customRecords; 

    public RecordController(IRepository<CustomRecord> customRecords) { 
     _customRecord = customRecords; 
    } 

    public ActionResult Index() { 
     // Here we're just grabbing records based on some fictional "Deleted" flag 
     var items = _customRecords.Fetch(r => r.Deleted == false); 
     // Items is now an IEnumerable<CustomRecord> 

     return View(items); 
    } 
} 

瀏覽/錄音/ Index.cshtml:

@model IEnumerable<CustomRecord> 
<ul> 
    @foreach(var item in Model) { 
     <li>@item.Name</li> 
    } 
</ul> 

與主鍵沒有從我的遷移(設置正確,我已經在過去的問題僅使用.PrimaryKey())是不夠的,我使用以下內容創建非內容記錄:

SchemaBuilder.CreateTable(typeof(CountryRecord).Name, 
            table => table.Column<int>("Id", c => c.PrimaryKey().Identity()) 
               .Column<string>("Code") 
               .Column<string>("Name")); 
+0

嗯......我已經開始使用IRepository之前,與[this](http://patrickyong.net/2010/07/26/hello-orchard -part-3working-with-data /)教程,然後我得到了一些錯誤,現在我可以無誤地看到我的視圖,但它不會顯示任何內容。我不確定'.Fetch()'究竟是什麼意思,但不知何故它不起作用。有沒有辦法從表格中獲取所有記錄?在我之前鏈接的教程中,他使用_customRecord.Table,但這也不起作用。非常感謝! – avb

+0

'.Table'和'.Fetch()'是獲取記錄的兩種方式,所以聽起來好像還有另外一個問題。你有任何異常或日誌文件消息?你有沒有嘗試過調試器中的代碼以查看是否引發了任何異常? – mdm

+0

踩過它,沒有什麼奇怪的,沒有exeptions。我會把我的代碼放在答案中。 – avb

相關問題