Моя цель: пользователь выбирает элемент из списка (список элементов из базы данных), и этот элемент будет отображаться на другой странице.
Я хочу передать ключ из базы данных, который выбран в одном контроллере и имеетдоступ к этому выбранному ключу с другого контроллера.
Моя база данных была создана Entity Framework, одной из моих моделей.
Моя модель базы данных:
public class Apartment
{
// id of apartment
[HiddenInput(DisplayValue = false)]
public int ApartmentId { get; set; }
// quantity in apartment
[Required(ErrorMessage = "Поле должно быть установлено")]
public int Quantity { get; set; }
// class of apartment
[Required(ErrorMessage = "Поле должно быть установлено")]
public Classes Class { get; set; }
// price of apartment
[Required(ErrorMessage = "Поле должно быть установлено")]
public int Price { get; set; }
// start of book apartment
[Required(ErrorMessage = "Поле должно быть установлено")]
public DateTime Start { get; set; }
// end of book apartment
public DateTime End { get; set; }
}
// Class apartment in enum
public enum Classes
{
Economy,
Standard,
Luxury
}
Просмотр, где пользователь выбирает свою квартиру:
foreach (Hotel.DAL.Entities.Apartment a in Model)
{
<div id="ap" class="col-md-3">
<p>Class: @a.Class
<p>Quantity: @a.Quantity человек
<p>Price for one day: @a.Price $
@if (ViewBag.TimeInt != null)
{
ViewBag.FullPrice = a.Price * ViewBag.TimeInt;
<p>Full price: @ViewBag.FullPrice $</p>
}
@if (HttpContext.Current.Request.HttpMethod == "POST")
{
<form asp-action="Index" method="post">
<p>
<button value="Open Window" onclick="window.open('/Home/Confirm')" class="btn btn-primary">Book</button>
<input type="hidden" name="id" value="@a.ApartmentId" />
</p>
</form>
}
</div>
}
Скрытый тип - это вход, в котором я беру значение моего ключа.
Метод просмотра контроллера:
public ActionResult Index(string sortOrder)
{
ViewData["ClassSortParm"] = sortOrder == "Class" ? "class_desc" : "Class";
ViewData["PriceSortParm"] = sortOrder == "Price" ? "price_desc" : "Price";
var p = from s in dbshow.GetList()
select s;
switch (sortOrder)
{
case "class_desc":
p = dbshow.GetList().OrderByDescending(s => s.Class);
break;
case "price_desc":
p = dbshow.GetList().OrderByDescending(s => s.Price);
break;
default:
p = dbshow.GetList().OrderBy(s => s.Class);
break;
}
return View(p);
}
// filters to book apartments
[HttpPost]
public ActionResult Index(string sortOrder, Classes? Class, int? quantity, DateTime? start, DateTime? end, bool? check)
{
ViewData["CurrentQuan"] = quantity;
ViewData["CurrentClass"] = Class;
ViewData["CurrentStart"] = start;
ViewData["CurrentEnd"] = end;
ViewData["CurrentCheck"] = check.GetValueOrDefault();
ViewData["ClassSortParm"] = sortOrder == "Class" ? "class_desc" : "Class";
ViewData["PriceSortParm"] = sortOrder == "Price" ? "price_desc" : "Price";
var aps = from s in dbshow.GetList()
select s;
return View(aps);
}
Контроллер, который мне нужен для передачи ApartmentId (ключ) по умолчанию:
public ActionResult Confirm()
{
return View();
}
Я слышал, что лучший способ сделать это с помощью куки. Но я не знаю как.