首页 > 解决方案 > 为什么我不能在我的索引页面上使用它作为模型?

问题描述

我有一个名为 Banner 的类,我想将其用作索引页的模型。但是每当我尝试使用它时,我都会收到以下错误:

“名称 Banner 在当前上下文中不存在”

“找不到类型或命名空间横幅的名称(缺少指令或引用)”

我一直使用这样的模型,对于其他类,它工作得很好......

经过一番搜索,我找到了一些答案,但都没有奏效,这就是我尝试过的:


索引.cshtml

@model QBit_Ecommerce_Mvc.Models.Util.Banner

@{
    ViewData["Title"] = "Home Page";
}


<link rel="stylesheet" href="~/css/Index.css">

<div class="row">
    <div class="col-12">
        <div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel">
            <ol class="carousel-indicators">
                <li data-target="#carouselExampleIndicators" data-slide-to="0" class="active"></li>
                <li data-target="#carouselExampleIndicators" data-slide-to="1"></li>
                <li data-target="#carouselExampleIndicators" data-slide-to="2"></li>
            </ol>
            <div class="carousel-inner">
                @{ int cont = 0;}
                @foreach (Banner _Banner in Banner.listaBanners)
                {
                    if (cont == 0)
                    {
                        <div class="carousel-item active">
                            <img class="d-block w-100" src="data:image/jpeg;base64,@_Banner._Imagem" alt="First slide" height="400">
                        </div>
                    }
                    else
                    {
                        <div class="carousel-item">
                            <img class="d-block w-100" src="data:image/jpeg;base64,@_Banner._Imagem" alt="Second slide" height="400">
                        </div>
                    }
                    cont++;
                }                
            </div>
            <a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev">
                <span class="carousel-control-prev-icon" aria-hidden="true"></span>
                <span class="sr-only">Previous</span>
            </a>
            <a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next">
                <span class="carousel-control-next-icon" aria-hidden="true"></span>
                <span class="sr-only">Next</span>
            </a>
        </div>
    </div>
</div>

这是无法识别横幅的地方:

@foreach (Banner _Banner in Banner.listaBanners)

这是我的横幅课程:

using Microsoft.Data.SqlClient;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Threading.Tasks;

namespace QBit_Ecommerce_Mvc.Models.Util
{
    public class Banner : Conexao
    {
        #region "Construtores"
        public Banner()
        {

        }
        #endregion

        #region "Propriedades"
        public string _Imagem { get; set; }
        public byte[] _ImagemBytes { get; set; }
        #endregion

        #region "Variáveis"
        public static List<Banner> listaBanners = new List<Banner>();
        #endregion

        #region "Métodos"
        public List<Banner> GetBanners()
        {
            try
            {
                string sql = "SELECT Imagem FROM EcommerceBanners";
                DataTable dtBanner = new DataTable();

                using (SqlConnection _Connection = Conectar())
                {
                    using (SqlCommand _Command = new SqlCommand(sql, _Connection))
                    {
                        _Command.CommandType = CommandType.StoredProcedure;
                        SqlDataReader reader;
                        using (reader = _Command.ExecuteReader())
                        {
                            dtBanner.Load(reader);
                        }
                    }
                }

                if (dtBanner.Rows.Count != 0)
                {
                    foreach (DataRow _RowBanner in dtBanner.Rows)
                    {
                        Banner _Banner = new Banner();
                        _Banner._ImagemBytes = (byte[])_RowBanner.ItemArray[0];
                        _Banner._Imagem = Convert.ToBase64String(_Banner._ImagemBytes);
                        listaBanners.Add(_Banner);
                    }
                }
                return listaBanners;
            }
            catch (Exception)
            {

                throw;
            }
        }
        #endregion
    }
}

关于如何解决这个问题并在索引上使用我的模型的任何想法?


编辑

控制器索引动作

public IActionResult Index()
        {
            if(Produto.listaProdutos.Count() <= 0)
            {
                Produto _Produto = new Produto();
                _Produto.CarregaListaProdutos();
            }
            return View();
        }

标签: asp.net-coremodel-view-controller.net-core

解决方案


这是无法识别横幅的地方:

@foreach(Banner.listaBanners 中的横幅 _Banner)

由于您想在视图页面(.cshtml)中使用 Banner 类,您必须先添加命名空间。因此,尝试@using QBit_Ecommerce_Mvc.Models.Util在页面顶部添加。

在 Index.cshtml 中,代码如下:

@using QBit_Ecommerce_Mvc.Models.Util
@model QBit_Ecommerce_Mvc.Models.Util.Banner
@{
    ViewData["Title"] = "Home Page";
}


<link rel="stylesheet" href="~/css/Index.css">

<div class="row">
    <div class="col-12">
        <div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel">
            <ol class="carousel-indicators">
                <li data-target="#carouselExampleIndicators" data-slide-to="0" class="active"></li>
                <li data-target="#carouselExampleIndicators" data-slide-to="1"></li>
                <li data-target="#carouselExampleIndicators" data-slide-to="2"></li>
            </ol>
            <div class="carousel-inner">
                @{ int cont = 0;}
                @foreach (Banner _Banner in Banner.listaBanners)
                {
                    if (cont == 0)
                    {
                        <div class="carousel-item active">
                            <img class="d-block w-100" src="data:image/jpeg;base64,@_Banner._Imagem" alt="First slide" height="400">
                        </div>
                    }
                    else
                    {
                        <div class="carousel-item">
                            <img class="d-block w-100" src="data:image/jpeg;base64,@_Banner._Imagem" alt="Second slide" height="400">
                        </div>
                    }
                    cont++;
                }                
            </div>
            <a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev">
                <span class="carousel-control-prev-icon" aria-hidden="true"></span>
                <span class="sr-only">Previous</span>
            </a>
            <a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next">
                <span class="carousel-control-next-icon" aria-hidden="true"></span>
                <span class="sr-only">Next</span>
            </a>
        </div>
    </div>
</div>

推荐阅读