c# - 在 ASP.NET Core Razor 页面的发布请求中角色为空
问题描述
我有这个显示文本框和按钮的 Razor Pages。单击后,它将在表中创建/插入角色。问题是当我在OnPostAsync
方法处设置断点时,role
参数为空。
这是我的前端代码:
@page
@model CreateModel
@{
ViewData["Title"] = "Create";
}
<h1>Create Role</h1>
<hr />
<div class="row">
<div class="col-md-4">
<form asp-route-returnUrl="@Model.ReturnUrl" method="post">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="Input.Name"></label>
<input asp-for="Input.Name" class="form-control" />
<span asp-validation-for="Input.Name" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="Create" class="btn btn-primary" />
</div>
</form>
</div>
</div>
这是我的代码隐藏:
public class CreateModel : PageModel
{
private readonly RoleManager<IdentityRole> _roleManager;
public CreateModel(RoleManager<IdentityRole> roleManager)
{
_roleManager = roleManager;
}
[BindProperty]
public IdentityRole Name { get; set; }
public InputModel Input { get; set; }
public string ReturnUrl { get; set; }
public class InputModel
{
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} and at max {1} characters long.", MinimumLength = 3)]
[Display(Name = "Role Name")]
public IdentityRole Name { get; set; }
//public string Name { get; set; }
}
public void OnGet(string returnUrl = null)
{
ReturnUrl = returnUrl;
}
public async Task<IActionResult> OnPostAsync(IdentityRole role) {
await _roleManager.CreateAsync(role);
return Page();
}
}
解决方案
问题可能来自返回的类型IdentityRole
,在客户端,您的浏览器不知道如何将变量类型转换为IdentityRole
. 一些流行的类型是:string
, int
, List<T>
...
因此,在这种情况下,我建议改用字符串。
public InputModel Input { get; set; }
public class InputModel
{
public string Name { get; set; }
}
public async Task<IActionResult> OnPostAsync() {
await _roleManager.CreateAsync(new IdentityRole { Name = Input.Name });
return Page();
}
推荐阅读
- json - 缺少数组字符
- r - 如何在 R 中使用 Rcrawler 抓取多个网站?
- vue.js - 如何将自定义页脚添加到 Bootstrap-Vue 表
- html - 由于 Wkhtmltopdf,页面上的所有字体都变小了
- angularjs - 使用清单 bower.json 文件配置 highstock - AngularJS
- angular - 如何在角度 7 中禁用引导程序 4 按钮组数组中的单击按钮
- c# - 为什么我的手动模型验证非常慢?
- fortran - 如何使用 Fortran 从某一行读取并在同一文件的末尾写入?
- awk - 使用 awk/sed 从具有特定模式的行中提取信息
- javascript - 布尔值的 Javascript 完整日期字符串为真,尽管它无效