微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在视图中访问localdb数据

如何解决在视图中访问localdb数据

我现在正在启动一个ASP.NET核心mvc项目,但无法在特定视图中显示信息。

我有2个模型,这些模型包含它们的特殊性,并且需要在HomeController中声明的视图中访问这两个模型。这是其中一种模型:

public class Tipo_Logradouro
    {
        public int Id  { get; set; }
        public string Abreviatura { get; set; }
        public string Nome_Tipo { get; set; }
    }

我的意图是通过cshtml表显示“ Abreviatura”和“ Nome_Tipo”,其中所有数据均已注册。但是,当我尝试它给出实例错误时,我无法显示它。该模型的控制方法是通过脚手架进行的。

我不知道是否可以执行此操作,或者它是否非常简单,但是我正在开始,我想解决这种情况。

PS:我试图提供信息的cshtml不在其范围之内。

解决方法

您需要遍历Tipo_Logradouro对象的列表,并在循环中读取Abreviatura和Nome_Tipo属性的值。

调试时是否从数据库中获取数据?还是您正在使用内存数据库?

,

我有2个包含其特异性的模型,我需要 可以在HomeController中声明的视图中访问两者。

尽管视图只能接受一种类型的模型,但是您可以有多种方法在同一视图中显示多个不同的模型数据。

第一种方式:

您可以将需要显示数据的两个模型合并为一个新模型,然后在视图中接收新模型以显示不同模型的数据。

public class Tipo_Logradouro
    {
        public int Id  { get; set; }
        public string Abreviatura { get; set; }
        public string Nome_Tipo { get; set; }
    }

另一种型号:

   public class Person
    {
        public int Id { get; set; }
        public string Name{ get; set; } 
    }

组合的新模型:

public class CombineModel
    {
        public List<Tipo_Logradouro> Tipo_Logradouros { get; set; }
        public List<Person> Persons { get; set; }
    }

控制器:

public IActionResult ShowData()
        { 
            CombineModel combineModel = new CombineModel()
            {
                Persons = _context.Person.ToList(),Tipo_Logradouros = _context.Tipo_Logradouro.ToList()
            };
            return View(combineModel);
        }

查看:

@model CombineModel
@{
    ViewData["Title"] = "ShowData";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h1>ShowData</h1>

<table class="table table-bordered">
    <tr>
        <td>Id</td>
        <td>Name</td>
    </tr>
    @foreach (var item in (IEnumerable<Person>)Model.Persons)
    {
        <tr>
            <td>@item.Id</td>
            <td>@item.name</td>
        </tr>
    }
</table>
<br />
<br />
<table class="table table-bordered">
    <tr>
        <td>Id</td>
        <td>Abreviatura</td>
        <td>Nome_Tipo</td>
    </tr>
    @foreach (var item in (IEnumerable<Tipo_Logradouro>)Model.Tipo_Logradouros)
    {
        <tr>
            <td>@item.Id</td>
            <td>@item.Abreviatura</td>
            <td>@item.Nome_Tipo</td>
        </tr>
    }
</table>

第二种方式:

您可以使用 ViewData 将其他模型传递给视图:

控制器:

 public IActionResult ShowData()
        {
            List<Tipo_Logradouro> data = _context.Tipo_Logradouro.ToList();
            ViewData["data"] = data;
            List<Person> persons= _context.Person.ToList();
            return View(persons);
        }

查看:

@model IEnumerable<Person>
@{
    ViewData["Title"] = "ShowData";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h1>ShowData</h1>

<table class="table table-bordered">
    <tr>
        <td>Id</td>
        <td>Name</td>
    </tr>
    @foreach (var item in Model)
    {
        <tr>
            <td>@item.Id</td>
            <td>@item.name</td>
        </tr>
    }
</table>
<br /><br />
<table  class="table table-bordered">
    <tr>
        <td>Id</td>
        <td>Abreviatura</td>
        <td>Nome_Tipo</td>
    </tr>
    @foreach (var item in (IEnumerable<Tipo_Logradouro>)ViewData["data"])
    {
        <tr>
            <td>@item.Id</td>
            <td>@item.Abreviatura</td>
            <td>@item.Nome_Tipo</td>
        </tr>
    }
</table>

这是测试结果:

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。