Html帮助程序无法使用下拉列表



我有一个enum,出于注册目的,我想变成DropDownList,我目前正在使用:

@Html.DropDownListFor(InputModel => InputModel.Input.UserProffesion.GetValues(typeof(Mindfull8User.Proffesion)).Cast<string>())

我得到了一个错误:

严重性代码描述项目文件行抑制状态错误(活动(CS0176无法使用访问成员">枚举。GetValues(Type("实例引用;用类型名称限定它取而代之的是Mindfull8 c:\Users\User\source\repos\Mindfull8\Mindfull8/Areas\Identity\Pages\Account\Register.cshtml 53

如何解决此问题?感谢

数据模型:

namespace Mindfull8.Areas.Identity.Pages.Account
{
public class RegisterModel : PageModel
{
private readonly SignInManager<Mindfull8User> _signInManager;
private readonly UserManager<Mindfull8User> _userManager;
private readonly IUserStore<Mindfull8User> _userStore;
private readonly IUserEmailStore<Mindfull8User> _emailStore;
private readonly ILogger<RegisterModel> _logger;
private readonly IEmailSender _emailSender;     

public RegisterModel(
UserManager<Mindfull8User> userManager,
IUserStore<Mindfull8User> userStore,
SignInManager<Mindfull8User> signInManager,
ILogger<RegisterModel> logger,
IEmailSender emailSender)
{
_userManager = userManager;
_userStore = userStore;
_emailStore = GetEmailStore();
_signInManager = signInManager;
_logger = logger;
_emailSender = emailSender;
}
/// <summary>
///     This API supports the ASP.NET Core Identity default UI infrastructure and is not intended to be used
///     directly from your code. This API may change or be removed in future releases.
/// </summary>
[BindProperty]
public InputModel Input { get; set; }
/// <summary>
///     This API supports the ASP.NET Core Identity default UI infrastructure and is not intended to be used
///     directly from your code. This API may change or be removed in future releases.
/// </summary>
public string ReturnUrl { get; set; }
/// <summary>
///     This API supports the ASP.NET Core Identity default UI infrastructure and is not intended to be used
///     directly from your code. This API may change or be removed in future releases.
/// </summary>
public IList<AuthenticationScheme> ExternalLogins { get; set; }
/// <summary>
///     This API supports the ASP.NET Core Identity default UI infrastructure and is not intended to be used
///     directly from your code. This API may change or be removed in future releases.
/// </summary>
public class InputModel
{
[Required]
[StringLength(255, ErrorMessage = "Max characters is 255")]
[Display(Name = "FirstName")]
public string FirstName { get; set; }
[Required]
[StringLength(255, ErrorMessage = "Max characters is 255")]
[Display(Name = "LastName")]
public string LastName { get; set; }
[Required]
[Display(Name = "Gender")]
public bool? Gender { get; set; }
[Required]
[Display(Name = "Proffesion")]
public Proffesion UserProffesion{ get; set; }

/// <summary>
///     This API supports the ASP.NET Core Identity default UI infrastructure and is not intended to be used
///     directly from your code. This API may change or be removed in future releases.
/// </summary>
[Required]
[EmailAddress]
[Display(Name = "Email")]
public string Email { get; set; }
/// <summary>
///     This API supports the ASP.NET Core Identity default UI infrastructure and is not intended to be used
///     directly from your code. This API may change or be removed in future releases.
/// </summary>
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} and at max {1} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
/// <summary>
///     This API supports the ASP.NET Core Identity default UI infrastructure and is not intended to be used
///     directly from your code. This API may change or be removed in future releases.
/// </summary>
[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
}
}

Register.cshtml:

<div class="row">
<div class="col-md-4">
<form id="registerForm" asp-route-returnUrl="@Model.ReturnUrl" method="post">
<h2>Create a new account.</h2>
<hr />
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-floating">
<input asp-for="Input.FirstName" class="form-control" autocomplete="username" name="FirstName" aria-required="true" />
<label asp-for="Input.FirstName">First Name</label>
<span asp-validation-for="Input.FirstName" class="text-danger"></span>
</div>
<div class="form-floating">
<input asp-for="Input.LastName" class="form-control" autocomplete="username" name="LastName" aria-required="true" />
<label asp-for="Input.LastName">Last Name</label>
<span asp-validation-for="Input.LastName" class="text-danger"></span>
</div>
<div class="form-floating">
<input asp-for="Input.Email" class="form-control" autocomplete="username" aria-required="true" />
<label asp-for="Input.Email"></label>
<span asp-validation-for="Input.Email" class="text-danger"></span>
</div>
<div class="form-floating">
<input asp-for="Input.Password" class="form-control" autocomplete="new-password" aria-required="true" />
<label asp-for="Input.Password"></label>
<span asp-validation-for="Input.Password" class="text-danger"></span>
</div>
<div class="form-floating">
<input asp-for="Input.ConfirmPassword" class="form-control" autocomplete="new-password" aria-required="true" />
<label asp-for="Input.ConfirmPassword"></label>
<span asp-validation-for="Input.ConfirmPassword" class="text-danger"></span>
</div>


<div class="form-floating">
@Html.DropDownListFor(InputModel=> InputModel.Input.UserProffesion ,  Html.GetEnumSelectList<Proffesion>(), optionLabel: "Select a value")
</div>   

<div class="form-floating">
</div>
<button id="registerSubmit" type="submit" class="w-100 btn btn-lg btn-primary">Register</button>
</form>

用户模型为:

public class Mindfull8User : IdentityUser
{
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime CreationDate { get; set; } = DateTime.Now;
public DateTime LastOnline { get; set; } = DateTime.Now;
public bool? Gender { get; set; }
public Proffesion UserProffesion { get; set; }
public enum Proffesion
{
Doctor,
Paitent,
Proffesor
}
}

是否尝试使用HtmlHelper.GetEnumSelectList方法返回给定类型的选择列表?

例如,如果Proffesion是给定的enum类型:

@Html.DropDownListFor(InputModel=> InputModel.UserProffesion,  Html.GetEnumSelectList<Proffesion>(), optionLabel: "Select a value")       

最新更新