1

モデル:

public class TestModel
{
    [Column]
    public string Name { get; set; }
}

コントローラ:

TestModel[] metadata = context.GetTable<TestModel>().ToArray();


return View(itemsToShow.ToList());

名前の列を表示し、ユーザーの選択でアルファベット順に並べ替えますが、正常に動作します (デバッグ モードでテストしました。たとえば、ユーザーが「d」を選択すると、「d」で始まる項目のみが表示されます)。

問題は、ビューに「@model IEnumerable」と foreach ループを追加すると、エラーが発生することです。

4

2 に答える 2

1

問題は、ビューがモデルのタイプを期待しているのに、エラー メッセージが示すようにIEnumerable<TestModel>渡していることです。IList<String>

コントローラーのに投影metadataIList<String>てビューに渡すのではなく、次のようにフィルタリングする必要があるmetadataようです

IEnumerable<TestModel> metadata = context.GetTable<TestModel>().ToArray();

var itemsToShow = string.IsNullOrEmpty (page) 
    ? metadata 
    : metadata.Where(x => x.Name.StartsWith(page, true, null));

ViewData["currentPage"] = page ?? string.Empty;

return View(itemsToShow.ToList());
于 2013-10-22T09:49:41.967 に答える
0

なぜあなたはあなたに電話.ToList()するのitemsToShowですか?(ただの重複だと思います)

最終行List<string> itemsへの変更IEnumerable<string> itemsと削除.ToList()

于 2013-10-22T09:57:35.927 に答える