C# 如何在asp.net mvc中将数据库信息传输到另一个控制器
我的目标:用户从列表(数据库中的项目列表)中选择一个项目,该项目将显示在另一个页面上 我想从一个控制器中选择的数据库传输密钥,并从另一个控制器访问该选择的密钥 我的数据库是由实体框架创建的,实体框架是我的模型之一 我的数据库模型:C# 如何在asp.net mvc中将数据库信息传输到另一个控制器,c#,asp.net-mvc,post,model-view-controller,controller,C#,Asp.net Mvc,Post,Model View Controller,Controller,我的目标:用户从列表(数据库中的项目列表)中选择一个项目,该项目将显示在另一个页面上 我想从一个控制器中选择的数据库传输密钥,并从另一个控制器访问该选择的密钥 我的数据库是由实体框架创建的,实体框架是我的模型之一 我的数据库模型: public class Apartment { // id of apartment [HiddenInput(DisplayValue = false)] public int ApartmentId { get; set; }
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>
}
我需要传输ApartmentId(密钥)的控制器为默认值:
public ActionResult Confirm()
{
return View();
}
我听说用饼干做的更好。但是我不知道怎么做。您可以创建一个cookie并读取cookie的内容,也可以使用会话。 见示例: 或者另一种解决方案是将它们的选择保存在数据库中,并在需要的地方获取它们 更新:
编辑表单以将密钥发布到/confirm/以便无需在cookie或会话中分配此值有多种方法存储和检索密钥值。你可以根据自己的需要选择一个。1.使用cookies存储密钥2。将键添加到页面查询字符串中:设置和获取它非常容易。3.使用数据库队列来存储它。最后,使用页面会话:如果应用程序扩展到多个页面,请确保这不会正常工作machines@MoeJallaq我尝试使用查询字符串:您能解释一下吗,我需要初始化f.ex.:
stringid=Request.QueryString[“Id”]代码>在我的索引控件(method post)中,或者因为您正在使用mvc:返回重定向到操作(“确认”,“MyController”,new{input=“myInput”})代码>@Noobie 1我在确认视图中使用的变体,它是本地主机错误。第二种变体:我刚刚更改了确认控制器中的返回字符串,这是错误的地址。很可能我不完全理解你的意思(哦,我刚刚意识到,您正在使用一个隐藏字段“key”发布到“/Home/Confirm/”,我按的键是您需要的密钥?正确吗?然后在控制器中,您需要从表单中读取数据,例如[FromForm]MyForm表单。如果确认方法位于不同的控制器中,则需要指定控制器和操作所有扬声器并将该方法标记为POST
public ActionResult Confirm()
{
return View();
}