我想創建一個具有 2 個表單的頁面,例如同時具有注冊和登錄表單的頁面。但在 ASP.NET Core 中,我只能為一種形式提供一種模型。我搜索了它,我知道我可以使用視圖資料或視圖包為登錄和注冊模型制作視圖模型,但我懷疑這種方式是否正確。
這是正確的嗎?

然后我收到警告
將 null 文字或可能的 null 值轉換為不可為 null 的型別
我該如何解決?
uj5u.com熱心網友回復:
理想情況下,您應該有不同的頁面用于登錄和注冊,您可以在此處查看一些示例,我絕對建議您在實施您所描述的更改之前做更多的研究,但如果您仍然想繼續該選項,而不是一種方法可能是創建一個具有登錄和注冊屬性的視圖模型。您應該直接使用視圖模型來填充視圖資料,而不是使用 ViewData 或 ViewBag。
// Example get action result
[HttpGet]
public IActionResult Login(string returnUrl = "") {
var model = new LoginViewModel { ReturnUrl = returnUrl };
return View(model);
}
// Example post action result
[HttpPost]
public async Task<IActionResult> Login(LoginViewModel model) {
if (ModelState.IsValid) {
var result = await _signManager.PasswordSignInAsync(model.Username,
model.Password, model.RememberMe,false);
if (result.Succeeded) {
if (!string.IsNullOrEmpty(model.ReturnUrl) && Url.IsLocalUrl(model.ReturnUrl)) {
return Redirect(model.ReturnUrl);
} else {
return RedirectToAction("Index", "Home");
}
}
}
ModelState.AddModelError("","Invalid login attempt");
return View(model);
}
// Example view
@model LoginViewModel
@{
ViewBag.Title = "Login";
}
<h2>Login</h2>
<form method = "post" asp-controller = "Account" asp-action = "Login"
asp-route-returnurl = "@Model.ReturnUrl">
<div asp-validation-summary = "ValidationSummary.ModelOnly"></div>
<div>
<label asp-for = "Username"></label>
<input asp-for = "Username" />
<span asp-validation-for = "Username"></span>
</div>
<div>
<label asp-for = "Password"></label>
<input asp-for = "Password" />
<span asp-validation-for = "Password"></span>
</div>
<div>
<label asp-for = "RememberMe"></label>
<input asp-for = "RememberMe" />
<span asp-validation-for = "RememberMe"></span>
</div>
<input type = "submit" value = "Login" />
</form>
uj5u.com熱心網友回復:
您可以為視圖使用一個模型。您可以使用代表每種形式的兩個復雜物件組成該模型。
- 頁面模型
- 登錄模型
- 注冊模型
您可以有兩個區域視圖 SignIn 和 SignUp。然后用兩個部分視圖組成一個父頁面。Parent 仍然有一個像上面一樣的視圖模型,但是您可以將部分視圖的范圍限定為它們的模型的根(SignInModel、SignUpModel),而不是從 Parent 嵌套(SignInModel.Username)
uj5u.com熱心網友回復:
您可以嘗試檢查您的 .csproj 檔案是否包含<Nullable>enable</Nullable>.如果是,請嘗試將其洗掉。<Nullable>enable</Nullable>設定可空注釋背景關系和可空警告背景關系啟用。您可以參考檔案。
如果 .csproj 檔案不包含<Nullable>enable</Nullable>,可以嘗試使用<Nullable>disable</Nullable>.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/440805.html
標籤:C# asp.net 核心 asp.net-core-mvc
