Мой вид не отображает мои данные таблицы в MVC - PullRequest
0 голосов
/ 23 ноября 2018

Возникла небольшая проблема, возможно, простое решение, но я не могу ее решить!

У меня проблема с отображением моих данных в виде.У меня есть 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);
    }

но я не получаю никаких данных на мой взгляд при запуске программы ..

Кто-нибудь знает решение?

Ответы [ 3 ]

0 голосов
/ 23 ноября 2018
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)
);
0 голосов
/ 23 ноября 2018

хорошо, это то, что я должен написать в контроллере !, это не сработало. Получил ошибку с () после нового полного, поэтому я его убрал, может ли это быть проблемой?

 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);
    }
0 голосов
/ 23 ноября 2018

Проблема в том, что если вы напишите b.Full, вы получите IQueryable<Full>, но если вы хотите выполнить запрос, вы должны написать .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);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...