0

ASP.NET MVCの使用経験はありますが、数週間後、Orchardのモジュールに取り組んでいます。

私が理解できないのは、オーチャードでコンテンツパーツまたはコンテンツタイプを使用することがほぼ義務付けられているということですが、データベースからデータを取得して、一部の記事ではなく、自分のやり方でデータを表示したいだけです。

どうしてこれなの?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

「Hellofromview」が見えるので、本当に自分の視界にたどり着きます。

4

1 に答える 1

1

すべてのレコードが Orchard の移行によって作成されていると仮定すると、IRepository<>インターフェイスを使用してデータにアクセスできます。

例えば

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"));
于 2012-11-15T12:25:17.983 に答える