Я не уверен, что использование этой сессии или tempdata полезно для этой проблемы или даже если я не знаю, как это сделать. (Все еще получаю зависание MVC с asp.net).Извлечение данных из другого представления
В основном на моем первом представлении, которое называется видом оплаты, у меня есть много полей, которые пользователи заполняют, чтобы пожертвовать определенной благотворительности. Теперь, чтобы это было добавлено в базу данных и завершено пожертвование, я создам страницу подтверждения, которая будет передавать все данные и отображать неизменяемый текстовый формат на странице подтверждения, предоставляя всю информацию, предоставленную пользователем в полях, которые я создал. На странице подтверждения я хотел бы нажать кнопку «Изменить», которая позволит пользователю вернуться на страницу оплаты, где данные, которые они вставили, все еще хранятся, но могут быть изменены простым нажатием на поля ввода , Я думаю, что использование сеанса или tempdata лучше всего подходит для этого, но я довольно смущен, как будто я использую это, когда пользователь щелкает пожертвовать на странице окончательного подтверждения, перезапустит ли сайт? Такие как очистить все сохраненные данные. Это то, чего я хочу. Мне нужен метод, который позволяет пользователю редактировать текущие данные, находящиеся на экране, нажав «Изменить» на другом представлении и способный изменить его в представлении оплаты.
ОПЛАТА VIEW
@model CharitySite.Models.Payment
....
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
....
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
<h1>@ViewBag.Name</h1>
<label> Full Name:</label>
<input type="text" id="fullname" name="user_name" />
<label> Amount:</label>
<input type="text" id="ammount" name="user_ammount" />
<label>Comment:</label>
<input type="text" id="comment" name="user_comment" />
<br /><br />
@Html.LabelFor(model => model.CardName, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.CardName, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.CardName, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.CardNumber, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.CardNumber, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.CardNumber, "", new { @class = "text-danger" })
</div>
</div>
.... // more form controls
<input type="submit" value="Create" class="btn btn-default"
}
@Html.ActionLink("Back to List", "Index")
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
Оплата Контроллер
public ActionResult Index()
{
return View(db.Payments.ToList());
}
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Payment payment = db.Payments.Find(id);
if (payment == null)
{
return HttpNotFound();
}
return View(payment);
}
// GET: Payments/Create
public ActionResult Payment()
{
var model = new Payment();
model.ValidFrom = DateTime.Now;
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Payment([Bind(Include = "ID,CardName,CardNumber,ValidFrom,Expires,CardSecurityCode,EmailAddress,Address,City,Country,PostCode")] Payment payment)
{
if (ModelState.IsValid)
{
db.Payments.Add(payment);
db.SaveChanges();
ViewBag.Name = TempData["Name"];
ViewBag.Amount = TempData["Amount"];
ViewBag.Comment = TempData["Comment"];
return RedirectToAction("Index");
}
return View(payment);
}
Пожалуйста, не просто сбрасывайте весь свой нерелевантный код в вопросе. Непонятно, почему вам нужно перенаправить на страницу подтверждения, но если вы это сделаете, то в методе POST-платежей Payments() вам необходимо сохранить данные где-то, желательно в базе данных, но это может быть Session. Затем вам нужно перенаправить на метод 'Confirm()', где вы извлекаете данные и отображаете страницу подтверждения, которая будет включать в себя вашу кнопку подтверждения (которая отправляется в метод 'Confirm()' и ссылку 'Edit', которая перенаправляет обратно на метод 'Create()'. –