2

ユーザーに添付された別のコンテンツパーツに追加のデータを保存できないようです。私は次のことをしました:

  • モジュールを作成しました
  • モジュールで、ProfilePartとProfilePartRecordのモデルを作成しました
  • 移行では、ProfilePartRecordのテーブルを作成しました(ContentPartRecordタイプから)
  • 移行では、WithPart ProfilePartを設定して、ユーザーのタイプ定義を変更しました。
  • get用とpost用の2つの編集メソッドを持つドライバークラスを作成しました(コードスニペットは以下にあります)
  • また、ProfilePartRecordタイプのprofilePartRepositoryのストレージフィルターを追加するハンドラーを作成しました

モジュール構造

  • Drivers / ProfilePartDriver.cs
  • Handlers / ProfileHandler.cs
  • Models / ProfilePart.cs
  • Models / ProfilePartRecord.cs
  • Views / EditorTemplates / Parts / profile.cshtml
  • Migrations.cs
  • Placement.info

問題はドライバーにあると思うので。これは私のコードです:

パーツがユーザーにアタッチされているため、問題が発生していますか?または私は何か他のものが欠けていますか?

パブリッククラスProfilePartDriver:ContentPartDriver {

protected override string Prefix
{
    get { return "Profile"; }
}

//GET
protected override DriverResult Editor(ProfilePart part, dynamic shapeHelper)
{
    return ContentShape("Parts_Profile_Edit", () => 
                    shapeHelper.EditorTemplate(TemplateName: "Parts/Profile", Model: part, Prefix: Prefix));
}

//POST
protected override DriverResult Editor(ProfilePart part, IUpdateModel updater, dynamic shapeHelper)
{
    updater.TryUpdateModel(part, Prefix, null, null);
    return Editor(part, shapeHelper);
}

}

4

2 に答える 2

2

Skywalker のブログを使用しています。ユーザーを使用して顧客を登録し、独自のコンテンツ パーツを追加する方法についての章が 1 つあります。私にとってはうまくいきました。

于 2012-08-05T18:19:36.437 に答える
0

まず第一に、ダッシュボードに移動して特定のユーザーを編集するときに、ProfilePart エディターが表示されますか? シェイプキーとして使用していることに気付きParts_Profile_Editましたが、実際にEditorTemplates/Parts/Profile.cshtmlはテンプレートとして使用しています。これは完全に正しいですが、Placement.info ファイルは形状キーを使用することに注意してください。そのためParts_Profile_Edit、そこで形状名として使用する必要があります。そうしないと表示されません。

2 つ目Editor- 2つ目のドライバー メソッド (POST を処理するメソッド) が呼び出されているかどうかを確認するためにデバッグを試みましたか?

バートランドが示唆したように、動作する既存のモジュールの 1 つを調べて (ギャラリーにユーザー プロファイル用のモジュールがあります)、違いを確認します。それは小さなものかもしれません。タイプミス。

于 2012-07-03T13:07:55.397 に答える