C# 在模型中列出要查看的控制器?
我正在学习MVC5,但我找不到无法访问视图中的名称列表的原因?我肯定我做错了什么,但我不明白为什么,我希望能得到一些帮助来继续下去 在控制器中,我测试了如何使用C# 在模型中列出要查看的控制器?,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我正在学习MVC5,但我找不到无法访问视图中的名称列表的原因?我肯定我做错了什么,但我不明白为什么,我希望能得到一些帮助来继续下去 在控制器中,我测试了如何使用ViewBag,并通过返回列表,然后使用@Model 模型类: using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace MVC_1.Models { public class ListNames
ViewBag
,并通过返回列表,然后使用@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");
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
名称空间MVC_1.0模型
{
公共类列表名
{
公共静态列表名称;
//建造师
公共列表名()
{
//创建列表
名称=新列表();
//在列表中添加一些名称
姓名。添加(“安娜”);
姓名。添加(“琳达”);
名称。添加(“Petra”);
}
}
}
控制器:
public ActionResult ListNames(List<string> Names)
{
ViewBag.Name = Names[0];
return View(Names);
}
public ActionResult列表名(列表名)
{
ViewBag.Name=名称[0];
返回视图(名称);
}
视图:
@model MVC_1.Models.ListNames
@{
ViewBag.Title=“ListNames”;
}
名单名称
@查看包。名称
@型号
您忘记将get
和set
添加到模型内的列表中
public class ListNames
{
public List<string> names { get; set; }
//rest of the code
}
视图:
@model MVC_1.Models.ListNames
@{
ViewBag.Title=“ListNames”;
}
名单名称
@查看包。名称
@foreach(Model.names中的变量名)
{
@名字
}
顶部提示:不要为查看包而烦恼。使用强类型viewmodel(与视图关联的类
)。根据我的经验,使用ViewBag
会使事情变得难以理解,有时会导致难以发现错误-例如没有意识到对象或属性尚未初始化。您的模型是一个列表,因此您需要在视图中对其进行迭代以显示元素。您实际上想做什么。GET方法不应具有参数列表名称
(在方法中初始化模型)。您已经显示了一个模型ListNames
,但从未在任何地方使用过它。并且您没有将正确的模型传递给视图(您将列表
传递给一个需要类型为列表名
的视图),谢谢您的评论!谢谢你的回答!我添加了your代码,但我仍然无法获得@Model的值??是否应该有类似@Model.Names的内容?假设我想为每个循环创建一个循环,那么我需要使用类似于…1foreach
或其他方法迭代Model.Names
。抱歉,但我在这一行下面有一条红线:@name这是什么原因?@front-back我的错,我忘记了@
在foreach
前面。当我运行代码时,我在@foreach处得到一个空异常引用。。。。行:(列表是空的吗!?像我在使用add(“Linda”)的构造函数中那样向列表中添加名称是错误的吗?因为列表现在是一个属性?我感谢您的帮助!
public class ListNames
{
public List<string> names { get; set; }
//rest of the code
}
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>
}