【问题标题】:Why I can't use this as a model on my index page?为什么我不能在我的索引页面上使用它作为模型?
【发布时间】:2021-01-29 17:53:20
【问题描述】:

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

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

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

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

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

  • 重新启动计算机
  • 重新启动 Visual Studio
  • 正在删除 .vs 文件夹
  • 重新创建横幅类

索引.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();
        }

【问题讨论】:

  • 您的索引操作在哪里?
  • 我测试了你的场景,但它对我有用。我只是评论查询部分以避免错误,所以手动设置横幅列表,它就像一个魅力。我认为您最好在 Banner 对象中设置一个项目并评论查询部分。

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


【解决方案1】:

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

@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>

【讨论】:

  • 谢谢,我刚刚测试了它,它可以工作。添加这一行@using QBit_Ecommerce_Mvc.Models.Util 是修复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多