【问题标题】:How to save the settings of an authentication id in ASP.NET MVC如何在 ASP.NET MVC 中保存身份验证 ID 的设置
【发布时间】:2018-11-24 10:47:30
【问题描述】:

我制作了一个电视指南,您可以在其中看到 5 个频道的节目。如果您登录,您还可以制作“个人”电视指南。您可以在其中通过单击复选框来决定您有兴趣查看其画面的 5 个频道中的哪一个。如何让应用程序记住用户输入。假设我登录并打开通道一 (SVT1) 和通道二 (SVT2) 的菜单。然后我希望这两个频道在我下次使用该用户 id 登录时也打开,我该怎么做?

Screenshot of my personal tv-guide page

我的控制器

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>

我的模型(来自我的数据库表 Full with entity framework)

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

【问题讨论】:

    标签: asp.net-mvc authentication model-view-controller


    【解决方案1】:

    通过使用以下命令,您可以在控制器中获取当前用户的 UserId。

    using Microsoft.AspNet.Identity;
    


    .
    .

    User.Identity.GetUserId()
    

    使用此 ID 保存/检索用户选择。例如,您可以添加以下实体。

    public class User_Channel
    {
        public int User_ChannelId { get; set; }
        [MaxLength(128)]
        public string UserId { get; set; }
        public int ChannelId { get; set; }
    }
    

    【讨论】:

    • 嗨。谢谢输入。不能真正做到正确,你能不能说明如何使用这个更具体的,猜我需要以某种方式保存复选框值。示例总是好的 :-) #vahid
    • 嗨,是的,您应该保存复选框值。检查这个link
    猜你喜欢
    • 1970-01-01
    • 2012-02-21
    • 2015-02-03
    • 2012-08-21
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    • 2019-03-22
    相关资源
    最近更新 更多