ASP.NET MVC 将 RememberMe 复选框添加到 @model AuthenticationScheme[]

模糊熊

我试图添加一个复选框并处理更改事件,如果我这样做,我可以发回控制器

 <input type="checkbox" name="RememberMe" checked="@ViewBag.RememberMe"  /> RememberMe

它总是发布错误,我不知道如何处理更改事件或是否/如何扩展 @model AuthenticationScheme[] 以包含 RememberMe 属性

控制器

 [HttpPost("~/signin")]
        public async Task<IActionResult> SignIn([FromForm] string provider, bool rememberMe)
        {
            // Note: the "provider" parameter corresponds to the external
            // authentication provider choosen by the user agent.
            _serverStore.RememberMe = rememberMe;
            if (string.IsNullOrWhiteSpace(provider))
            {
                return BadRequest();
            }

            if (!await HttpContext.IsProviderSupportedAsync(provider))
            {
                return BadRequest();
            }
            if (User.Identity is not null && User.Identity.IsAuthenticated)
            {
                User? user = new()
                {
                    NameIdentifier = 0,
                    Email = string.Empty
                };
                long dbuserId = await CreateOrUpdateUser(user).ConfigureAwait(false);
                ClaimsIdentity? identity = User.Identity as ClaimsIdentity;
                identity?.AddClaim(new Claim("Id", dbuserId.ToString()));
                return Redirect("/");
            }
            return Challenge(new AuthenticationProperties { RedirectUri = "/Login", ExpiresUtc = DateTime.UtcNow.AddYears(1), IsPersistent = true, AllowRefresh = true, IssuedUtc = DateTime.Now, Items = { new KeyValuePair<string, string?>("MyId", "123456") } }, provider);
        }

看法

@using Microsoft.AspNetCore.Authentication
@model AuthenticationScheme[]

<div class="jumbotron">
    <h1>Authentication</h1>
    <p class="lead text-left">Sign in using one of these external providers:</p>
   
    @foreach (var scheme in Model.OrderBy(p => p.DisplayName))
    {
         
        <form action="/signin" method="post">
            <input type="hidden" name="Provider" value="@scheme.Name" />
            <input type="hidden" name="ReturnUrl" value="@ViewBag.ReturnUrl" />
            @*<input type="checkbox" name="RememberMe" checked="@scheme."  onchange =@HandleRememberMeChange(a) /> RememberMe*@
            <button class="btn btn-lg btn-success m-1" type="submit">Connect using @scheme.DisplayName</button>
        </form>
    }
</div>
乔星光

HTML5 中的复选框有点特殊,因为它们在未选中时不会提交值。

https://docs.microsoft.com/en-us/aspnet/core/mvc/views/working-with-forms?view=aspnetcore-6.0#checkbox-hidden-input-rendering

如果您对 asp net core 使用 Input Tag Helpers,这将解决问题(请参阅提到的文档。

或者,您可以添加自己的自定义 JavaScript,这将更改更改时的值,并且仅在选中时发送到服务器(这不会是问题,因为服务器会给它一个默认值,对于布尔值是 false。

这是一个基本的 HTML 示例,您可以如何实现此功能。

<body>
<form method="post">
    <input type="checkbox" name="RememberMe">Remember Me
    <input type="text" name="Username" placeholder="Username"> 
    <button type="submit">Send</button>
</form>
<script>
    var checkbox = document.querySelector('input[type="checkbox"]');
    checkbox.addEventListener('change', function(){
        if(checkbox.checked){
            checkbox.value = 'true';
        }else{
            checkbox.value = 'false';
        }
    });
</script>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ASP.NET Core MVC - 将 DB 绑定复选框添加到 Create.cshtml

将复选框添加到 ASP.NET 网格视图

如何将ng-model添加到Symfony表单类型复选框

将#id添加到ASP.NET MVC URL

ASP.NET MVC将实体添加到ICollection

如何使用.net将复选框添加到Excel电子表格?

Asp.net MVC将复选框数据放入布尔列表

当我将v-model属性添加到复选框时,全部检查停止工作

ASP.NET MVC复选框产生的HTML

ASP.NET MVC复选框始终为false

ASP NET MVC 4并排呈现复选框

如何将复选框值正确提交到ASP.NET MVC中的控制器

如何在ASP.NET Core中添加基于cookie的authenticationScheme?

将客户端验证失败添加到ASP.NET MVC ModelState

使用 Webpack 将 JavaScript 模块添加到 ASP.NET MVC 应用程序

动态地将链接字段添加到ASP.NET MVC EF模型

如何将FontAwesome图标添加到ASP.NET MVC项目?

如何将 ID 属性添加到 asp.net MVC 链接元素

ASP.NET MVC:如何将嵌套属性添加到Modelstate?

ASP.NET MVC 3 Razor-将类添加到EditorFor

如何将ID属性添加到ASP.NET MVC中的Html.BeginForm()?

将项目添加到虚拟集合ASP.NET MVC

将List <T>属性添加到ASP.net MembershipUser对象MVC 4

将WCF服务添加到ASP.NET Core MVC应用程序

无法将文件上传功能添加到项目-ASP.Net MVC Core 3.0

创建后将配置文件添加到 ASP .NET MVC 项目

将.png图像添加到标题属性-ASP.Net MVC 4

如何将CSS添加到我的项目asp.net mvc中?

将ASP.NET MVC区域添加到ASP.NET Web窗体现有项目