Я беру курс ASP.NET UDEMY. К сожалению, это старый курс, и я не верю, чтобы получить там ответ. < /P>
Теперь, что именно происходит. На этом этапе курса мне нужно работать с клиентами. Часть, которая должна показывать список клиентов или детали конкретного клиента, работают нормально. Однако, когда я пытаюсь добавить нового клиента в базу данных, приложение сбои. 'VidlyExcise1.controllers.customersController'. Необязательный параметр должен быть ссылочным типом, нулевым типом или объявлен как необязательный параметр.
Имя параметра: параметры
Описание: Неизвестное исключение произошло во время выполнения текущего веб -запроса. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где он возник в коде. public class CustomersController : Controller
{
private ApplicationDbContext _context;
public CustomersController()
{
_context = new ApplicationDbContext();
}
protected override void Dispose(bool Disposing)
{
_context.Dispose();
}
// GET: Customers
[Route("customers")]
public ActionResult CustomersList()
{
var customers = _context.Customers.Include(c => c.MembershipType).ToList();
var viewModel = new CustomersIndexViewModel
{
Customers = customers
};
return View(viewModel);
}
[Route("customers/{id}")]
public ActionResult CustomerDetails(int id)
{
var customer = _context.Customers.Include(m => m.MembershipType)
.SingleOrDefault(c => c.Id == id); //Eager loading
var viewModel = new CustomerDetailsViewModel
{
Name = customer.Name,
MembershipType = customer.MembershipType,
Birthdate = customer.Birthdate
};
return View(viewModel);
}
[Route("customers/new")]
public ActionResult New()
{
var membershipTypes = _context.MembershipTypes.ToList();
var viewModel = new NewCustomerViewModel()
{
MembershipTypes = membershipTypes,
Customer = new Customer()
};
return View("New", viewModel);
}
[HttpPost]
public ActionResult Create(Customer customer)
{
_context.Customers.Add(customer);
_context.SaveChanges();
return RedirectToAction("CustomersList", "Customers");
}
< /code>
Теперь, когда я нажимаю кнопку, просто чтобы ввести представление для добавления нового клиента, она открывается нормально.
Но когда я пытаюсь нажать кнопку «Сохранить», я получаю ошибку, которую я опубликовал выше.
Я даже пробовал, изменяя код в методе «Создать», даже просто для публикации 404.return HttpNotFound();
< /code>
Итак, как я понимаю, метод создания даже не доходит до той части чего-либо, он просто сбои. PrettyPrint-Override ">@model VidlyExercise1.ViewModels.NewCustomerViewModel
@{
ViewBag.Title = "New";
Layout = "~/Views/Shared/_Layout.cshtml";
}
New Customer
@using (Html.BeginForm("Create", "Customers", FormMethod.Get))
{
@Html.LabelFor(m => m.Customer.Name)
@Html.TextBoxFor(m => m.Customer.Name, new { @class = "form-control" })
@Html.LabelFor(m => m.Customer.Birthdate)
@Html.TextBoxFor(m => m.Customer.Birthdate, new { @class = "form-control" })
@Html.CheckBoxFor(m => m.Customer.IsSubscribedToNewsLetter) Subscribed to newsletter
@Html.LabelFor(m => m.Customer.MembershipTypeId)
@Html.DropDownListFor(m => m.Customer.MembershipTypeId,
new SelectList(Model.MembershipTypes, "Id", "Name"),
"Select Membership Types", new { @class = "form-control" })
@Html.HiddenFor(m=>m.Customer.Id)
Save
}< /code>
< /div>
< /div>
< /p>
Я думаю, что пример кода от наставника на Github почти идентичен. Представление HTML отличается, потому что он также включает в себя дополнительные уроки, но код контроллера кажется правильным. < /P>
Я знаю, что есть необходимость опубликовать то, что я уже пробовал. Я искал потенциальные исправления и попробовал некоторые из них, но проблема в том, что я не знаю, что я ищу.@using (Html.BeginForm("Search", "Person",FormMethod.Get))
< /code>
Не используйте переменную «id» в ActionResult CustomerList: я никогда не использовал ее. Опять же, самому трудно найти ошибку, так как я только недавно начал изучать asp.net.
и еще один вопрос: кнопка «Создать» должна получить «клиент» откуда -то, но где в коде просмотра я на самом деле «отправляю» ее?
Подробнее здесь: https://stackoverflow.com/questions/659 ... ionary-con