Как сохранить настройки идентификатора аутентификации в ASP.NET MVC - PullRequest
0 голосов
/ 24 ноября 2018

Я сделал телегид, в котором можно посмотреть программы на 5 каналов.Если вы авторизуетесь, вы также можете создать «персональный» твид.где вы можете решить, какой из 5 каналов вы заинтересованы в просмотре таблицы, нажав на их флажки.Как сделать так, чтобы приложение запомнило ввод пользователя.Допустим, я захожу в систему и открываю меню для первого канала (SVT1) и двух (SVT2).Затем я хочу, чтобы эти два канала также были открыты в следующий раз, когда я войду в систему с этим идентификатором пользователя. Как мне это сделать?

Снимок экрана моей личной телепрограммы

Мой контроллер

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

    [Authorize(Roles = "User")]
    public ActionResult channel_index()
    {
        List<Full> model = new List<Full>();
        var list = db.Full.Where(d => d.Date == "2018-11-12").ToList();

        foreach (var item in list)
        {
            if (item.Id <1000)
            {
                var initedF = new Full
                {
                    Channel = Regex.Replace(item.Channel, @"\s", ""),
                    Program = item.Program,
                    Time = item.Time,
                    Date = Regex.Replace(item.Date, @"\s", "")
                };
                model.Add(initedF);
            }

        }
        return View(model);
    }
}

Мой взгляд

@model IEnumerable<Uppgift4.Models.Full>

@{
ViewBag.Title = "channel_Index";
var list = Model.ToList();
var list1 = list.Where(_ => _.Channel == "SVT1").Select(_ =>  _.Time + 
_.Program).ToList();
var list2 = list.Where(_ => _.Channel == "SVT2").Select(_ => _.Time + 
_.Program).ToList();
var list3 = list.Where(_ => _.Channel == "TV3").Select(_ => _.Time + 
_.Program).ToList();
var list4 = list.Where(_ => _.Channel == "TV4").Select(_ => _.Time + 
_.Program).ToList();
var list5 = list.Where(_ => _.Channel == "Kanal5").Select(_ => _.Time + 
_.Program).ToList();
}

(_ => _.Date + " " +_.Time + _.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>
            <h3>TV-Tablå 2018-11-12</h3>
            <b>Välj de kanaler du vill se tablån för</b>
        </th>
        <th>

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

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

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

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

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

Моя модель (из моей таблицы базы данных, заполненная структурой сущностей)

namespace Uppgift4.Models
{
using System;
using System.Collections.Generic;

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; }
  }
 }

1 Ответ

0 голосов
/ 24 ноября 2018

С помощью следующей команды вы можете получить идентификатор текущего пользователя в контроллерах.

using Microsoft.AspNet.Identity;

.
.
.

User.Identity.GetUserId()

Используйте этот идентификатор для сохранения / извлечения пользовательских вариантов.Например, вы можете добавить следующую сущность.

public class User_Channel
{
    public int User_ChannelId { get; set; }
    [MaxLength(128)]
    public string UserId { get; set; }
    public int ChannelId { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...