【问题标题】:My view don´t display my tabledata in mvc我的视图不在 mvc 中显示我的表数据
【发布时间】:2018-11-23 10:01:49
【问题描述】:

有一个小问题,可能是一个简单的解决方案,但无法解决!

我无法在视图中显示我的数据。我有 5 个复选框,我想显示属于每个复选框的所有数据。当我在视图中的列表中硬编码我的数据时,该复选框起作用,但当我想显示表中的数据时它不起作用,我缺少什么?

我的代码

我的模型(使用实体框架从我的表创建)

 public partial class Full
{
    public int Id { get; set; }
    public string Channel { get; set; }
    public string Program { get; set; }
    public string Category { get; set; }
    public string Date { get; set; }
    public string Time { get; set; }
    public string Length { get; set; }
}

我的看法

@model IEnumerable<Uppgift4.Models.Full>

@{
    ViewBag.Title = "channel_Index";
    var list = Model.ToList();
    var list1 = list.Where(_ => _.Channel == "SVT1").Select(_ => 
    _.Program).ToList();//select records which in one channel
    var list2 = list.Where(_ => _.Channel == "SVT2").Select(_ => 
    _.Program).ToList();
    var list3 = list.Where(_ => _.Channel == "TV3").Select(_ => 
   _.Program).ToList();
    var list4 = list.Where(_ => _.Channel == "TV4").Select(_ => 
   _.Program).ToList();
    var list5 = list.Where(_ => _.Channel == "Kanal5").Select(_ => 
   _.Program).ToList();

 }
<style>
.hiddenRow {
    padding: 0 !important;
}

.in-line {
    display: inline;
}
</style>
<br />
<table class="table table-condensed" style="border-collapse:collapse;">
<thead>
    <tr>
        <th>
            Channel
        </th>
        <th>

        </th>
    </tr>
</thead>
<tbody>
<tr class="accordion-toggle">
        <td><input type="checkbox" data-toggle="collapse" data-target="div   
       [id*='demo1']" /> SVT1</td>
    </tr>
    @for (var i = 0; i < @list1.Count; i++)
    {
        <tr><td colspan="2" class="hiddenRow"><div id="demo1+'@i'+" 
        class="accordian-body collapse">Program:@list1[i]</div> </td> </tr>

    }
 <tr data-toggle="collapse" data-target="#demo2" class="accordion-toggle">
        <td><input type="checkbox" data-toggle="collapse" data-target="div
        [id*='demo2']" /> SVT2</td>
    </tr>
    @for (var i = 0; i < @list2.Count; i++)
    {
        <tr><td colspan="2" class="hiddenRow"><div id="demo2+'@i'+" 
        class="accordian-body collapse">Program:@list2[i]</div> </td> </tr>

    }

    <tr data-toggle="collapse" data-target="#demo3" class="accordion-toggle">
        <td><input type="checkbox" data-toggle="collapse" data-target="div
        [id*='demo3']" /> TV3</td>
    </tr>
    @for (var i = 0; i < @list3.Count; i++)
    {
        <tr><td colspan="2" class="hiddenRow"><div id="demo3+'@i'+" 
        class="accordian-body collapse">Program:@list3[i]</div> </td> </tr>

    }

    <tr data-toggle="collapse" data-target="#demo4" class="accordion-toggle">
        <td><input type="checkbox" data-toggle="collapse" data-target="div
        [id*='demo4']" /> TV4</td>
    </tr>
    @for (var i = 0; i < @list4.Count; i++)
    {
        <tr><td colspan="2" class="hiddenRow"><div id="demo4+'@i'+" 
        class="accordian-body collapse">Program:@list4[i]</div> </td> </tr>

    }

    <tr data-toggle="collapse" data-target="#demo5" class="accordion-toggle">
        <td><input type="checkbox" data-toggle="collapse" data-target="div
        [id*='demo5']" /> Kanal5</td>
    </tr>
    @for (var i = 0; i < @list5.Count; i++)
    {
        <tr><td colspan="2" class="hiddenRow"><div id="demo5+'@i'+" 
        class="accordian-body collapse">Program:@list5[i]</div> </td> </tr>

    }
</tbody>
</table>

我的控制器

public class FavoritChannelsController : Controller
{
    TvProgramDBEntities db = new TvProgramDBEntities();
    Full f = new Full();

    public ActionResult channel_index()
    {
        List<Full> model = new List<Full>();
        {
            model.Add(new Full { Channel = "SVT1", Program = "fame" });
            model.Add(new Full { Channel = "SVT1", Program = "sport" });
            model.Add(new Full { Channel = "SVT2", Program = "news" });
            model.Add(new Full { Channel = "TV3", Program = "hockey" });
            return View(model);

        }
    }

所以当我对我的列表进行编码时,这个 actionresult 起作用,现在当我运行程序并按下复选框 SVT1 时,我得到了两个程序 Fame 和 Sport。

但我想展示我表中的所有数据,所以我试试这个:

 public ActionResult channel_index()
    {
        List<Full> model = new List<Full>();
        foreach (var item in db.Full)
        {
            f.Channel = item.Channel;
            f.Program = item.Program;
            model.Add(f);
        }
        return View(model);
    }

但是当我运行程序时,我的视图中没有任何数据..

有人知道解决办法吗?

【问题讨论】:

    标签: c# entity-framework model-view-controller


    【解决方案1】:

    问题是,如果你写b.Full,你会得到IQueryable&lt;Full&gt;,但如果你想做查询,你应该写.toList()

    更新:

    在数据库中,Program 有很多空格,这意味着 "SVT1" != "SVT1 "。你需要使用Regex.Replace(text, @"s", "")

    您可以查看一些其他示例如何删除空格http://www.csharp411.com/remove-whitespace-from-c-strings/

    public ActionResult channel_index()
            {
                List<Full> model = new List<Full>();
                //you need to do the query with ToList
                var list = db.Full.ToList();
    
                foreach (var item in list )
                {
                    var initedF = new Full({
                       Channel = Regex.Replace(item.Channel, @"s", ""), 
                       Program = Regex.Replace(item.Program, @"s", "")
                    });
                    //f.Channel = item.Channel;
                    //f.Program = item.Program;
                    model.Add(initedF);
                }
                return View(model);
            }
    

    【讨论】:

    • @Michael 请提供TvProgramDBEntities 班级代码
    • 不确定实体框架类是什么意思,是我发布的表格吗?尝试了您的代码,但在我看来仍然无法获得任何数据#maksym
    • 您能在TvProgramDBEntities 类中分享您的代码吗?
    • TvProgramDBEntitities 是我的数据库连接。我的数据存储在完整的表(类)中。找不到 TVProgramDBEntities 的任何特殊类代码,我在 MVC 项目中哪里可以找到?我的数据库与其他表没有关系..
    • 好的。然后在 foreach var list = db.Full; 之前执行此操作,然后将 list 中的内容发送给我
    【解决方案2】:
    CREATE TABLE [dbo].[Full] (
    [Id]       INT        IDENTITY (1, 1) NOT NULL,
    [Channel]  NCHAR (50) NULL,
    [Program]  NCHAR (50) NULL,
    [Category] NCHAR (50) NULL,
    [Date]     NCHAR (50) NULL,
    [Time]     NCHAR (50) NULL,
    [Length]   NCHAR (10) NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC)
    );
    

    【讨论】:

      【解决方案3】:

      好的,这就是我应该在控件中写的内容!,它确实有效 在new Full之后出现()错误所以我把它拿走了,这可能是问题吗?

       public ActionResult channel_index()
          {
              List<Full> model = new List<Full>();
              //you need to do the query with ToList
              var list = db.Full.ToList();
      
              foreach (var item in list)
              {
                  var initedF = new Full
                  {
                      Channel = item.Channel,
                      Program = item.Program
                  };
                  //f.Channel = item.Channel;
                  //f.Program = item.Program;
                  model.Add(initedF);
              }
              return View(model);
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-08
        • 2018-12-24
        相关资源
        最近更新 更多