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();
}