在模型中列出控制器来查看?

时间:2015-12-16 09:31:37

标签: c# asp.net-mvc razor

我正在学习MVC 5,但我无法找到无法在视图中找到名单列表的原因?我确定自己做错了什么,但我不明白为什么会这样做,并且会提供一些帮助才能继续。

在控制器中,我测试过使用ViewBag并使用返回传递List,然后使用@Model

模特课程:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MVC_1.Models
{
    public class ListNames
    {
        public static List<string> names;

        // Constructor
        public ListNames()
        {
            // Create list
            names = new List<string>();
            // Add some names to list
            names.Add("Anna");
            names.Add("Linda");
            names.Add("Petra");
        }
    }
}

控制器:

public ActionResult ListNames(List<string> Names)
    {
        ViewBag.Name = Names[0];

        return View(Names);
    }

查看:

@model MVC_1.Models.ListNames

@{
    ViewBag.Title = "ListNames";
}

<h2>ListNames</h2>

<p>@ViewBag.Name</p>

<p>@Model.????</p>

1 个答案:

答案 0 :(得分:2)

您忘记将getset添加到模型内的列表中;

public class ListNames
{
    public List<string> names { get; set; }
    //rest of the code
}

正如@ stephen-muecke提到的那样,您的操作会返回List<string>,并且该视图需要ListNames模型。解决方案如下所示

public ActionResult ListNames()
{
    var listNames = new MVC_1.Models.ListNames();
    ViewBag.Name = listNames.names[0];

    return View(listNames);
}

查看:

@model MVC_1.Models.ListNames

@{
    ViewBag.Title = "ListNames";
}

<h2>ListNames</h2>

<p>@ViewBag.Name</p>
@foreach(var name in Model.names)
{
   <p>@name</p>
}