在模型中列出要查看的控制器

本文关键字:控制器 模型 | 更新日期: 2023-09-27 18:26:55

我正在学习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>

在模型中列出要查看的控制器

您忘记将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>
}