web-dev-qa-db-ja.com

ビューMVCでリストを表示する

ビューで作成したリストを表示しようとしていますが、「辞書に渡されるモデルアイテムのタイプは 'System.Collections.Generic.List1[System.String]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable1 [Standings.Models.Teams]」です。

私のコントローラー:

public class HomeController : Controller
{
    Teams tm = new Teams();

    public ActionResult Index()
    {
        var model = tm.Name.ToList();

        model.Add("Manchester United");
        model.Add("Chelsea");
        model.Add("Manchester City");
        model.Add("Arsenal");
        model.Add("Liverpool");
        model.Add("Tottenham");

        return View(model);
    }

私のモデル:

public class Teams
{
    public int Position { get; set; }
    public string HomeGround {get; set;}
    public string NickName {get; set;}
    public int Founded { get; set; }

    public List<string> Name = new List<string>();
}

私の見解:

@model IEnumerable<Standings.Models.Teams>

@{
ViewBag.Title = "Standings";
}

@foreach (var item in Model)
{
    <div>
        @item.Name
        <hr />
    </div>
}

助けていただければ幸いです:)

10
FiF4M33sTeR

アクションメソッドはモデルタイプをasList<string>と見なします。しかし、あなたの見解では、IEnumerable<Standings.Models.Teams>を待っています。ビューのモデルをList<string>に変更すると、この問題を解決できます。

しかし、最善の方法は、アクションメソッドからIEnumerable<Standings.Models.Teams>をモデルとして返すことです。その後、ビューのモデルタイプを変更する必要はありません。

But、私の意見では、モデルは正しく実装されていません。次のように変更することをお勧めします。

public class Team
{
    public int Position { get; set; }
    public string HomeGround {get; set;}
    public string NickName {get; set;}
    public int Founded { get; set; }
    public string Name { get; set; }
}

次に、アクションメソッドを次のように変更する必要があります。

public ActionResult Index()
{
    var model = new List<Team>();

    model.Add(new Team { Name = "MU"});
    model.Add(new Team { Name = "Chelsea"});
    ...

    return View(model);
}

そして、あなたの見解:

@model IEnumerable<Standings.Models.Team>

@{
     ViewBag.Title = "Standings";
}

@foreach (var item in Model)
{
    <div>
        @item.Name
        <hr />
    </div>
}
21
Farhad Jabiyev

ビューに間違ったモードを渡している。ビューは_@model IEnumerable<Standings.Models.Teams>_を探しており、var model = tm.Name.ToList();名前リストを渡しています。 Teamsのリストを渡す必要があります。

次のモデルを渡す必要があります

_var model = new List<Teams>();

model.Add(new Teams { Name =  new List<string>(){"Sky","ABC"}});
model.Add(new Teams { Name =  new List<string>(){"John","XYZ"} });
return View(model);
_
0
Ajay P