У меня есть элемент управления EnumDropDownListFor
на моей странице регистрации, который позволяет вам выбрать один из двух вариантов. Я попытался зарегистрировать две учетные записи с обеими опциями, но для обеих учетных записей всегда по умолчанию используется первая опция.
Это всегда работало во время тестирования при запуске кода в отладке, однако теперь код находится в сборке, он больше не работает, даже если код не был изменен.
Перечисление для выпадающего списка
public enum RaceName
{
Terran,
AsphaMiner
}
Register.cshtml
// rest of file
<div class="form-group">
@Html.LabelFor(m => m.RaceName, new { @class = "col-md-2 control-label" })
<div class="col-md-6">
@Html.EnumDropDownListFor(m => m.RaceName, new { @class = "form-control" })
</div></div>
// more of file below too
AccountController.cs
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser
{
UserName = model.UserName,
Email = model.Email
RaceName = model.RaceName,
// rest of controller
IdentityModels.cs
public class ApplicationUser : IdentityUser
{
public RaceName RaceName { get; set; }
[NotMapped]
public Race PlayerRace { get; set; }
public ApplicationUser()
{
PlayerRace = new Race(this);
}
// rest of default code
Race.cs
public virtual ApplicationUser RaceOwner { get; set; }
public Race(ApplicationUser user)
{
RaceOwner = user;
}
// other properties with [NotMapped] attribute so
// static values are not saved to sql db
RegisterViewModel.cs
public class RegisterViewModel
{
[Required]
[EmailAddress]
[Display(Name = "Email")]
public string Email { get; set; }
[Required]
[Display(Name = "Username")]
public string UserName { get; set; }
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2}
characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
[Compare("Password", ErrorMessage = "The password and confirmation
password do not match.")]
public string ConfirmPassword { get; set; }
public RaceName RaceName { get; set; }
}
Таким образом, пользователь создает учетную запись, вводит свой логин, пароль электронной почты и т. Д., Затем он выбирает один из вариантов DropDownList
1 из 2, но он всегда выбирает первый вариант, и я ничего не менял между переходом от отладки к версии сборки.
Если я выберу AsphaMiner
, он будет установлен на Terran
; и если я выберу Terran
, он установит Terran
.
Кто-нибудь может порекомендовать что-нибудь?