使用会话将数据从一个视图传递到另一个视图

本文关键字:视图 一个 另一个 会话 数据 | 更新日期: 2023-09-27 18:11:26

已经更改了我的帖子描述,因为我已经读到"sessions"是正确的使用方式。问题是我发现使用会话很困难,因为我以前从未使用过它。

我试图链接我的文本框与模型和传递这些值,你进入到另一个视图上操作另一个控制器。我只想显示您在SeatController Index页面中输入的值,以便稍后可以将它们用于我的预订项目。

我已经得到了什么:

  • 包含索引视图的BookingController
  • 包含另一个索引视图的SeatController

BookingController:

public class BookingController : Controller
{
    // GET: Booking
    [HttpGet]
    public ActionResult Index()
    {
        var vm = new BookingModel();            
        return View(vm);
    }
    [HttpPost]
    public ActionResult Index(BookingModel bookingModel)
    {
        if (ModelState.IsValid)
        {
            Session["SelectedValue"] = bookingModel;
            return RedirectToAction("Index", "Seat", new { model = bookingModel });
        }
        return View(bookingModel);
    }       
}

BookingModel:

 public class BookingModel
{
    public string DepartureRoute { get; set; }
    public string ReturnRoute { get; set; }
    public DateTime DepartureDate { get; set; }
    public DateTime ReturnDate { get; set;}
    public int adults { get; set; }
    public int childrens {get; set; }
}

指数(BookingController)

@model TestApplication.Models.BookingModel
@Session["SelectedValue"]

<div class="col-sm-9">
@using (Html.BeginForm())
{
    <div class="col-sm-6">
        <label>Outward route</label><br />
        @Html.TextBoxFor(m => Model.DepartureRoute, new { @class = "textbox" })
        <br />
        <label>Departure date</label><br />
        @Html.TextBoxFor(m => m.DepartureDate, new { @class = "textbox" })
        <br />
        <label>Adults:</label><br />
        @Html.TextBoxFor(m => Model.DepartureRoute, new { @class = "textbox" })
    </div>
    <div class="col-sm-6">
        <label>Return route</label><br />
        @Html.TextBoxFor(m => Model.DepartureRoute, new { @class = "textbox" })
        <br />
        <label>Return date</label><br />
        @Html.TextBoxFor(m => m.ReturnDate, new { @class = "textbox" })
        <br />
        <label>Childrens:</label><br />
        @Html.TextBoxFor(m => Model.DepartureRoute, new { @class = "textbox" })
        <br />
        <label>Information:</label><br />
        <button type="submit" class="button_continue">Continue</button> 
    </div>
}
</div>

"SeatController"的索引页是这样的:

指数(SeatController)

<div class="col-sm-12">
<label>Departure route</label><br />
@Html.DisplayFor(model => model.DepartureRoute)
<br />
<label>Return route</label><br />
@Html.DisplayFor(m => m.ReturnRoute);
<br />
<label>Departure date</label><br />
@Html.DisplayFor(m => m.DepartureDate);
<br />
<label>Return date</label><br />
@Html.DisplayFor(m => m.ReturnDate);
<br />
<label>Number of adults</label><br />
@Html.DisplayFor(m => m.adults);
<br />
<label>Number of childrens</label><br />
@Html.DisplayFor(m => m.childrens);
</div>

希望有人能给一个解决方案或一些指导如何做到这一点。

使用会话将数据从一个视图传递到另一个视图

您可以使用TempData来解决您的问题。

ASP。. NET MVC中使用TempData字典来共享数据控制器操作。点击这里阅读更多内容....

[HttpPost]
public ActionResult Index(BookingModel bookingModel)
{
  if (ModelState.IsValid)
  {
     TempData["BM"] = bookingModel;
     return RedirectToAction("Result");
  }
  return View(bookingModel);
}


public ActionResult Result()
{
   if (TempData["BM"] != null)
   {
     BookingModel bookingModel = (BookingModel) TempData["BM"];
     return View(bookingModel);
   }
}