我将 ASP.NET Core 身份实现到应用程序中,并实现了角色,一切都运行良好。我将电话号码添加为用户注册时的必填字段,它按预期写入 SQL 数据库。
但是,它没有在个人资料页面上显示电话号码 - 我希望它显示该号码,以便用户知道他们的号码已存储,或者他们是否需要更新联系信息。关于如何在此处显示电话号码有什么建议吗?
index.cshtml
如下 - 奇怪的是,它在这里返回用户名,没有任何逻辑:
@page
@model IndexModel
@{
ViewData["Title"] = "Profile";
ViewData["ActivePage"] = ManageNavPages.Index;
}
<h3>@ViewData["Title"]</h3>
<partial name="_StatusMessage" for="StatusMessage" />
<div class="row">
<div class="col-md-6">
<form id="profile-form" method="post">
<div asp-validation-summary="ModelOnly" class="text-danger" role="alert"></div>
<div class="form-floating mb-3">
<input asp-for="Username" class="form-control" placeholder="Please choose your username." disabled />
<label asp-for="Username" class="form-label"></label>
</div>
<div class="form-floating mb-3">
<input asp-for="Input.PhoneNumber" class="form-control" placeholder="Please enter your phone number."/>
<label asp-for="Input.PhoneNumber" class="form-label"></label>
<span asp-validation-for="Input.PhoneNumber" class="text-danger"></span>
</div>
<button id="update-profile-button" type="submit" class="w-100 btn btn-lg btn-primary">Save</button>
</form>
</div>
</div>
@section Scripts {
<partial name="_ValidationScriptsPartial" />
}
在 JavaScript 中,对象的属性更改时不会更新。这意味着 Input 将旧的 PhoneNumber 保留在内存中。一个快速解决方法是为 PhoneNumber 创建一个独立于输入的变量。
@{
ViewData["Title"] = "Profile";
ViewData["ActivePage"] = ManageNavPages.Index;
ViewData["PhoneNumber"] = Input.PhoneNumber;
}
和
<input asp-for="@ViewData['PhoneNumber']" class="form-control" placeholder="Please enter your phone number."/>
<label asp-for="@ViewData['PhoneNumber']" class="form-label"></label>
<span asp-validation-for="@ViewData['PhoneNumber']" class="text-danger"></span>
您可能需要找到一种方法将数据传回控制器。