1

の Editortemplate を作成しようとしていますList<Package>。次のように、Editortemplate ビューで型を完全に修飾しています。

@model List<JYP.Business.ViewModels.Package>

Editortemplate ビュー内でモデルを参照しようとすると、null 参照が返され、モデルが適切に関連付けられていないと思われます。UIHintEditortemplate を使用するには、ViewModel でa を使用する必要がありました。私の ViewModel にList<Package> Packagesは、カスタム Editortemplate を取得しようとしている が含まれています。私は何を間違っていますか?

4

2 に答える 2

1

規則に頼ることができます:

public class MyViewModel
{
    public List<Package> Packages { get; set; }
}

そして、あなたのメインビューで:

@model MyViewModel
@Html.EditorFor(x => x.Packages)

次に、Packages コレクションの各要素に対して自動的にレンダリングされるエディター テンプレートを定義できます。

@model JYP.Business.ViewModels.Package
...

慣例により、このエディタ テンプレートは~/Views/SomeController/EditorTemplates/Package.cshtmlまたはに配置する必要があります~/Views/Shared/EditorTemplates/Package.cshtml。これらは、ASP.NET MVC がこの順序で検索する 2 つの場所です。

于 2011-12-26T08:31:16.163 に答える
0

あなたの要件に従って、UIHint や、使用するテンプレートを指定するその他の方法を使用したくないことを理解しています。

これはあなたのために働くかもしれません。

public class PackageCollection : List<JYP.Business.ViewModels.Package>
    {
    }

現在メインモデルで使用中

public class ModelTest{
public PackageCollection Items { get; set;}
public ModelTest(){
    Items = new PackageCollection();
}
}

ViewEngine に従って、PackageCollection.cshtml または PackageCollection.ascx という名前の EditorTemplate を作成します。

別の解決策

UIHint と上記のソリューションを使用したくない場合は、Editor For で TemplateName を指定する必要があります。

Html.EditorFor(model=>model.Items , "yourtemplatename")

これは、packagecollection クラスを作成しなくても機能します。

ありがとう。

于 2011-12-25T03:32:00.770 に答える