【问题标题】:How to access a model to home view index.cshtml file in ASP.NET Core 5 MVC?如何在 ASP.NET Core 5 MVC 中访问模型到主视图 index.cshtml 文件?
【发布时间】:2021-01-11 13:43:21
【问题描述】:

我对 ASP.NET Core 完全陌生,并且遵循 Microsoft 的文档并开发了一个简单的 Web 应用程序。抱歉,如果问题不清楚。

我创建了一个名为Broadcast 的模型、视图和控制器。该模型有一个名为 live 的字段。我想将此模型访问到主视图的 index.cshtml 文件,这是一个单独的视图。

我已尝试在index.cshtml 文件主页视图的顶部包含Broadcast 视图

@model IEnumerable<SideCar.Models.Broadcast>

当我使用@foreach 访问模型时,出现以下错误:

System.NullReferenceException: '对象引用未设置为对象的实例。'

您能否指导一下,我应该学习什么才能将模型访问到不同的视图中?谢谢。

这里是控制器:

using Microsoft.AspNetCore.Mvc;
using SideCar.Data;
using SideCar.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace SideCar.Controllers
{
    public class BroadcastController : Controller
    {
        private readonly ApplicationDbContext _db;

        public BroadcastController(ApplicationDbContext db)
        {
            _db = db;
        }

        public IActionResult Index()
        {
            IEnumerable<Broadcast> objList = _db.Boradcast;
            return View(objList);
        }
    }
}

和型号:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;

namespace SideCar.Models
{
    public class Broadcast
    {
        [Key]
        public int Id { get; set; }
        public string BroadcastHeading { get; set; }        
        public string BroadcastDesc1 { get; set; }
        public string BroadcastDesc2 { get; set; }
        public DateTime ActiveDate { get; set; }
        public DateTime ExpiryDate { get; set; }        
        public string Live { get; set; }
    }
}

【问题讨论】:

  • 在 `IEnumerable objList = _db.Boradcast;` 上设置断点并检查 objList 是否为空。你应该在你的前端,在你的 foreach 循环之前有一个条件来检查你的列表中是否有任何元素。

标签: asp.net-core


【解决方案1】:

将您的索引操作更改为:

public IActionResult Index()
        {
            var objList = _db.Set<Broadcast>().ToArray();
            return View(objList);
        }

【讨论】:

    【解决方案2】:

    这里有两种解决方案:

    1. 在视图中添加@if (Model != null){} 外部@foreach

    2. 使用

      IEnumerable<Broadcast> objList = _db.Boradcast.ToList();
      

      替换

      IEnumerable<Broadcast> objList = _db.Boradcast;
      

    【讨论】:

    • 谢谢。仍然是空对象。页面加载正常但没有数据流动,因为如果条件限制它。 code public IActionResult Index() { IEnumerable objList = _db.Boradcast.ToList();返回视图(objList); } @if (Model != null) { @foreach (var obj in Model) {

      test

      } } code
    • 你检查过你的`_db.Boradcast.ToList()`,可能没有数据。
    • 表中有一条记录,另外一个视图与控制器和模型同名,正确显示数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    相关资源
    最近更新 更多