0

Web サイトではなく、通常は MVC を使用して数か月で作成するビジネス中心の Web アプリケーションを作成することを目標に、Orchard の学習に熱心に取り組んでいますが、既に利用可能なさまざまなパーツを使用することで、はるかに効率的になりたいと考えています。

ただし、最後の 1 マイルは大きなブロックのようです。エンド ユーザーが一部のデータを編集できる形状を作成する必要があることを Orchard に伝えるにはどうすればよいでしょうか。フロントエンドからのデータを格納する Orchard 用モジュールの作成 には、ほとんどのエンド ユーザー編集に関するかなりの説明がありますが、データが既に入力された後に取得され、コントローラーの POST 操作を介して実行されます。私が理解できないのは、最初の GET 操作を通過する方法です。

詳しく説明すると、単純な MVC では、ユーザーが自分自身に関する情報を入力できるようにする場合があります。したがって、/Controllers/PersonController.cs があり、そこに Create() 関数を記述します。/Views/Person/Create.cshtml にビューを追加し、コントローラーから単に「View() を返す」だけです。HTTPGet メソッドの Create(Person p) では、オブジェクトを保存するために大変な作業を行います。

Orchard には、PersonPart とその PersonPartDriver があります。上記の記事からわかるように、POST メソッドを記述して PersonPart を受け取り、オブジェクトを保存します。

class PersonController : Controller
{
   private readonly IRepository<PersonPartRecord> personRepository;

   public PersonController(IRepository<PersonPartRecord> _personRepository) {
      personRepository = _personRepository;
   }

   [HttpPost]
   public Create(PersonPart part) {
      personRepository.Create(part.Record);
   }
}

問題ありませんが、Orchard で GET Editor(PersonPart, dynamic) メソッドを呼び出して、ユーザーが最初のデータ入力を行うためのフォームを取得するにはどうすればよいでしょうか?

protected override DriverResult Editor(PersonPart part, dynamic shapeHelper)
{
    return ContentShape("Parts_Person_Edit",
                        () => shapeHelper.EditorTemplate(
                                          TemplateName: "Parts/Person",
                                          Model: part,
                                          Prefix: Prefix));
}

または、コントローラに GET Create() メソッドを記述しますか? しかし、それを行うと、シェイプ作成システム全体がバイパスされますよね? むしろ Display() を実行し、テンプレートで編集可能なフォームにするべきだと頭の片隅で何かがうずきますが、Person の読み取り専用ビュー用の Display() があります ... 作成方法編集可能なビューが必要だと知っていますか?

質問が理にかなっていることを願って、誰かが助けてくれることを願っています.

ありがとう。

4

1 に答える 1