Asp.net core ASP.NET核心-MVC-视图中的模型变量-空异常

Asp.net core ASP.NET核心-MVC-视图中的模型变量-空异常,asp.net-core,model-view-controller,nullreferenceexception,Asp.net Core,Model View Controller,Nullreferenceexception,为了学习ASP.NET核心MVC,我做了一个简单的项目,并试图将在控制器中创建的模型实例传递给视图 控制器代码-我创建一个简单的列表,然后将其传递给视图,明确显示哪个视图 公共类TableController:控制器 { 公共IActionResult索引() { var modelData=新列表{“A”,“B”}; ViewBag.Title=“表格”; 返回视图(“/Pages/Table.cshtml”,modelData); } } 查看代码 @page @model List<

为了学习ASP.NET核心MVC,我做了一个简单的项目,并试图将在控制器中创建的模型实例传递给视图

控制器代码-我创建一个简单的列表,然后将其传递给视图,明确显示哪个视图

公共类TableController:控制器
{
公共IActionResult索引()
{
var modelData=新列表{“A”,“B”};
ViewBag.Title=“表格”;
返回视图(“/Pages/Table.cshtml”,modelData);
}
}
查看代码

@page
@model List<string>

    <div class="text-center">
        <h1 class="display-4">@ViewBag.Title</h1>

        @if (Model == null)
        {
            <p>There is no data to be displayed</p>
        }
        else
        {
            <ul>
                @foreach (string str in Model)
                {
                    <li>@str</li>
                }
            </ul>
        }
    </div>
@page
@模型列表
@视图包。标题
@if(Model==null)
{
没有要显示的数据

} 其他的 {
    @foreach(模型中的字符串str) {
  • @str
  • }
}
在控制器中设置断点时,作为模型参数传入的对象不为null:

但是,当我逐步进入视图代码时,我得到以下信息:

我看过其他一些“Model is null”帖子,但它们是由于View()Model参数中传递的内容与@Model声明中给出的视图中预期的内容之间的类型不匹配造成的


这可能很简单,但我不确定哪里出了问题?

在asp.net MVC中,视图并不意味着
Razor页面
。您可以使用
视图页面
,在视图中添加一个表文件夹。然后向其中添加Index.cshtml(Razor视图页面)

下面是一个演示:

控制器(
returnview()
中的
Index
操作将在视图/表(视图/控制器名称)中找到Index.cshtml):

查看文件夹结构(每个文件夹表示除共享的
之外的控制器):

结果:

在asp.net MVC中,视图并不意味着
Razor页面
。您可以使用
视图页面
,在视图中添加一个表文件夹。然后向其添加Index.cshtml(Razor视图页面)

下面是一个演示:

控制器(
returnview()
中的
Index
操作将在视图/表(视图/控制器名称)中找到Index.cshtml):

查看文件夹结构(每个文件夹表示除共享的
之外的控制器):

结果:
我也有同样的例外,解决方案是删除Index.cshtml中的@page,然后爆炸,一切都在那里。我花了5-6个小时来“解决”这个异常,但迟做总比不做要好。

我也遇到了同样的异常,解决方法是删除Index.cshtml中的@page,然后轰隆一声,一切都准备好了。我花了5-6个小时来“解决”这个异常,但迟做总比不做要好。

也许可以尝试使用模型的实际自定义类,其中列表是模型的属性,而不是直接使用。这就是MVC应该如何工作的可能尝试使用模型的实际自定义类,其中列表是模型的属性,而不是直接使用。这就是MVC的工作原理
@page
@model List<string>

    <div class="text-center">
        <h1 class="display-4">@ViewBag.Title</h1>

        @if (Model == null)
        {
            <p>There is no data to be displayed</p>
        }
        else
        {
            <ul>
                @foreach (string str in Model)
                {
                    <li>@str</li>
                }
            </ul>
        }
    </div>
public class TableController : Controller
    {
        public IActionResult Index()
        {
            var modelData = new List<string> { "A", "B" };

            ViewBag.Title = "Tables";

            return View(modelData);
        }
    }
@model List<string>
@{
    ViewData["Title"] = "Table_Index";
}
<div class="text-center">
    <h1 class="display-4">@ViewBag.Title</h1>

    @if (Model == null)
    {
        <p>There is no data to be displayed</p>
    }
    else
    {
        <ul>
            @foreach (string str in Model)
            {
                <li>@str</li>
            }
        </ul>
    }
</div>