Estou trabalhando em um projeto que envolvia a utilização da opção select no ASP.Net Core 7.0, encontrei algumas dificuldades. Especificamente, enfrentei erros relacionados a uma exceção de referência nula em meu menu suspenso. Porém, observei que após o envio dos dados, eles são instalados no banco de dados SQL, ao retornar após o envio, é exibido um erro de exceção de referência nula. Esses erros tornaram o processo de desenvolvimento bastante desafiador e espero encontrar uma solução em breve. Qualquer conselho ou sugestão seria muito apreciada.
Erro
Ação
public IActionResult Apply()
{
ViewBag.Courselist = new SelectList(GetAllAccountIDList(), "Id",
"CourseName");
return View();
}
[HttpPost]
public IActionResult Apply(PurchasedFormViewModel purchasedFormVM)
{
if (ModelState.IsValid)
{
try
{
var transaction = new StudentBiodataViewModels
{
CourseId = purchasedFormVM.CourseId,
SurName = purchasedFormVM.SurName,
OtherName = purchasedFormVM.OtherName,
PhoneNumber = purchasedFormVM.PhoneNumber,
Email = purchasedFormVM.Email,
};
_context.StudentBiodata.Add(transaction);
_context.SaveChangesAsync();
}
catch (Exception ex)
{
ViewBag.Message = ex.Message + " Error occur while inserting records.";
}
}
return View();
}
Modelos
public class ApplyFormViewModel
{
public int Id { get; set; }
[Display(Name = "Course Apply")]
[Required(ErrorMessage = "Course Apply is Required")]
public int CourseId { get; set; }
[Display(Name = "SurName")]
[Required(ErrorMessage = "SurName is Required")]
public string SurName { get; set; }
[Display(Name = "Other Name")]
[Required(ErrorMessage = "Other Name is Required")]
public string OtherName { get; set; }
[Display(Name = "Phone Number")]
[Required(ErrorMessage = "Phone Number is Required")]
ErrorMessage = "Entered phone format is not valid.")]
public string PhoneNumber { get; set; }
[Required(ErrorMessage = "Email is Required")]
public string Email { get; set; }
}
Visualizar
<select id="fundcode" asp-for="CourseId" class="form-control">
<option value="">--Please select--</option>
@foreach (var item in ViewBag.Courselist )
{
<option value="@item.Value">@item.Text</option>
}
</select>
Você está retornando do POST para a mesma view chamada no manipulador GET, mas sem configurar o ViewBag.CourseList . É claro que quando a página é renderizada, essa variável é NULL e você obtém a exceção.
Acho que você precisa adicionar o mesmo código usado no GET antes de retornar para a View dentro do manipulador Post