Я могу просматривать данные из базы данных через ViewModel следующим образом:
[HttpGet]
[Authorize]
public ActionResult Rent(int id)
{
Helper helper = new Helper();
var cars = _context.Cars.Find(id);
var useremail = User.Identity.Name;
var username = helper.GetName(User.Identity.GetUserId());
var viewmodel = new RentalViewModel
{
UserName = username,
UserEmail = useremail,
CarMake = cars.Make,
CarMod = cars.Mod,
CarPicture = cars.Picture,
CarPrice = cars.Price,
CarId = cars.Id
};
return View(viewmodel);
}
Это прекрасно работает в представлении, и я могу вызвать нужные мне данные.
Теперь я пытаюсь нажать кнопку, а затем выполнить метод HttpPost, который возьмет эти данные и сохранит их в таблице (Модель) под названием Rental.
Этомой код:
[HttpPost]
public ActionResult RentPost(RentalViewModel model)
{
var rentals = new Rental
{
CarId = model.CarId
};
_context.Rentals.Add(rentals);
_context.SaveChanges();
return RedirectToAction("About", "Home");
}
, и это мое мнение:
@using (Html.BeginForm("RentPost", "Home", new {id = @Model.CarId}))
{
<h1> @Model.UserName </h1>
<h1> @Model.UserEmail </h1>
<h1> @Model.CarMake @Model.CarMod </h1>
<h1> </h1>
<img src="@Model.CarPicture" alt="" />
<h1> {@Model.CarPrice*3} </h1>
@Html.DisplayFor(m=>m.CarId)
<button type="submit" class="btn btn-primary"> Save </button>
}
Пока я передаю только один элемент только для целей тестирования и перенаправления также по той же причине.После отладки CarId имеет значение NULL, и это понятно, потому что ViewModel пуста в этой точке выполнения.Кто-нибудь может направить меня к правильной реализации?Спасибо