如何将数据从视图传递到控制器的发布端点?

时间:2019-06-23 23:46:54

标签: c# asp.net-mvc

我能够通过这样的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在执行时为空。谁能指导我正确实施?谢谢

0 个答案:

没有答案