【发布时间】:2025-11-24 07:20:09
【问题描述】:
我的目标:用户从列表中选择一个项目(来自数据库的项目列表),该项目将显示在另一个页面上。
我想从数据库中传输密钥,该密钥是在一个控制器中选择的,并且可以从另一个控制器访问这个选择的密钥。
我的数据库是由我的模型之一 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 (key) 的控制器是默认的:
public ActionResult Confirm()
{
return View();
}
我听说通过 cookie 可以更好地做到这一点。但我不知道怎么做。
【问题讨论】:
标签: c# asp.net-mvc post model-view-controller controller