2017-12-09 5 views
0

私はASPNETZERO .NET Core MVCテンプレートで作業しています。私はデータテーブルやJtableグリッドの代わりにタイルを使って簡単なインデックスビューを設定したい。私は文書hereの例に従っています。アプリサービスインデックスメソッドのコードをコピーしました。ビューモデルコードをコピーしました。その後、私のインデックスビューCSHTMLにコードを適用しました。コードのforeach行を記述してモデルに入れるとすぐに。インテリセンスは何も表示しません。私はコードをコンパイルすることができますが、私がページを実行すると、私は以下のエラーメッセージが表示されます。ASPNETZERO - 基本的なインデックスリストビューエラー

foreach文は、型の変数を操作することはできません「CompanyIndexViewModel」「CompanyIndexViewModelは、」私はこのエラーといくつかの助けを必要とする「GetEnumeratorメソッド」

の公開定義が含まれていないため。また、誰かがグリッドを使用する代わりにタイルを使用して単純なインデックスビューを表示する方法のコード例がある場合は、共有してください。私はタイルのCSS/htmlが動作するように見えます。私は自分のエンティティのリストオブジェクトを返すアプリケーションサービスを作成することができます。私はそれをindex.cshtmlページと関連するindex.jsで動作させる方法を理解しているようです。私はこれをABPテンプレートの外で何度もやってきました。私はABPテンプレートの文脈の中でこの仕事をするのに苦労しています。

ビューモデルコードは次のとおりです。

[AutoMapFrom(typeof(ListResultDto<CompanyListDto>))] 
public class CompanyIndexViewModel 
{ 
    public CompanyIndexViewModel(ListResultDto<CompanyListDto> output) 
    { 
     output.MapTo(this); 
    } 
} 
+0

'foreach(Model内のvar item)'を実行していて、ModelがCompanyIndexViewModel型で、何らかの並べ替えのリストでない場合、これは失敗します。 'foreach(Model.Items内のvar item)'を実行する必要があります。ビューモデル内のコレクションベースのプロパティであれば、 "Items"を置き換えます。 –

+0

@BrianMains - 私は自分の投稿を自分のビューモデルのクラスコードで更新しました。これはABP文書に示されているものと同じです。また、私はモデルを入力します。 itemsはオプションの1つではありません。私はToString()と3つの類似したもののような4つのオプションしか持っていません。 – exlnt

答えて

1

を読んでから、この解決策を得た:

[AutoMapFrom(typeof(ListResultDto<CompanyListDto>))] 
public class CompanyIndexViewModel : ListResultDto<CompanyListDto> 
{ 
    public CompanyIndexViewModel(ListResultDto<CompanyListDto> output) 
    { 
     output.MapTo(this); 
    } 
} 

here示すように、あなたがIndex.cshtmlModel.Itemsにアクセスすることができます。

@foreach (var company in Model.Items) 
{ 
    // ... 
} 
+0

ありがとうございました。あなたのソリューションも同様に機能しました! – exlnt

0

私は現在、私の問題の解決策を考え出しました。

以下のコードでビューモデルを更新しました。

[AutoMapFrom(typeof(ListResultDto<CompanyListDto>))] 
public class CompanyIndexViewModel 
{ 
    public IReadOnlyList<CompanyListDto> Companies { get; } 

    public CompanyIndexViewModel(IReadOnlyList<CompanyListDto> companies) 
    { 
     Companies = companies; 
    } 
} 

次に、私のコントローラコードを以下に更新しました。

var output = _companyAppService.GetCompanyList(input); 
var model = new CompanyIndexViewModel(output.Items); 
return View(model); 

私はこの記事あなたはhereを示すようListResultDto<CompanyListDto>を継承する必要がhere