ASP.NET MVC 如何将数据从 GET ActionResult 传递到同一视图的 POST ActionResult
ASP.NET MVC How to pass data from a GET ActionResult to the POST ActionResult of the same view
我有这些创建 ActionResults:
// GET: WC_Inbox/Create
public ActionResult Create(int? id)
{
System.Diagnostics.Debug.WriteLine("Employee ID was: " + id);
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Employee employee = db.Employees.Find(id);
if (employee == null)
{
return HttpNotFound();
}
string fullName = employee.First_Name + " " + employee.Last_Name;
System.Diagnostics.Debug.WriteLine("Employee full name: " + fullName);
ViewBag.EmployeeID = id;
ViewBag.Name = fullName;
ViewBag.Status = "Pending";
return View();
}
// POST: WC_Inbox/Create
// To protect from overposting attacks, enable the specific properties you want to bind to, for
// more details see https://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "ID,InboxID,EmployeeID,Org_Number,Hire_Date,Job_Title,Work_Schedule,Injury_Date,Injury_Time,DOT_12,Start_Time,Injured_Body_Part,Side,Missing_Work,Return_to_Work_Date,Doctors_Release,Treatment,Injury_Description,Equipment,Witness,Questioned,Medical_History,Inbox_Submitted,Comments,User_Email,Contact_Email,Specialist_Email,Optional_Email,Optional_Email2,Optional_Email3,Optional_Email4,Status,Add_User,Date_Added")] WC_Inbox wC_Inbox)
{
if (ModelState.IsValid)
{
//Get logged in windows user, get the date right now, and create the wcInbox unique ID
var userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
wC_Inbox.Add_User = userName;
wC_Inbox.Date_Added = DateTime.Today;
db.WC_Inbox.Add(wC_Inbox);
db.SaveChanges();
SendEmailIQ();
return RedirectToAction("Index");
}
ViewBag.EmployeeID = new SelectList(db.Employees, "ID", "First_Name", wC_Inbox.EmployeeID);
return View(wC_Inbox);
}
我需要将值 fullName
从 GET 方法传递给 POST 方法。有几篇帖子询问如何将数据从一个动作结果传递到另一个动作结果,但我还没有看到这样的帖子。我不知道如何将数据从 GET Create 传递到 POST Create 或如何在发送后检索数据。
您无法在 post 方法中需要数据时从 get 方法发送或检索数据,因为 Get 方法已完成执行并已清理。我建议您在 post 请求发出时在页面上添加一个隐藏字段以 posted 或重新获取 post 请求中的数据。
我有这些创建 ActionResults:
// GET: WC_Inbox/Create
public ActionResult Create(int? id)
{
System.Diagnostics.Debug.WriteLine("Employee ID was: " + id);
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Employee employee = db.Employees.Find(id);
if (employee == null)
{
return HttpNotFound();
}
string fullName = employee.First_Name + " " + employee.Last_Name;
System.Diagnostics.Debug.WriteLine("Employee full name: " + fullName);
ViewBag.EmployeeID = id;
ViewBag.Name = fullName;
ViewBag.Status = "Pending";
return View();
}
// POST: WC_Inbox/Create
// To protect from overposting attacks, enable the specific properties you want to bind to, for
// more details see https://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "ID,InboxID,EmployeeID,Org_Number,Hire_Date,Job_Title,Work_Schedule,Injury_Date,Injury_Time,DOT_12,Start_Time,Injured_Body_Part,Side,Missing_Work,Return_to_Work_Date,Doctors_Release,Treatment,Injury_Description,Equipment,Witness,Questioned,Medical_History,Inbox_Submitted,Comments,User_Email,Contact_Email,Specialist_Email,Optional_Email,Optional_Email2,Optional_Email3,Optional_Email4,Status,Add_User,Date_Added")] WC_Inbox wC_Inbox)
{
if (ModelState.IsValid)
{
//Get logged in windows user, get the date right now, and create the wcInbox unique ID
var userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
wC_Inbox.Add_User = userName;
wC_Inbox.Date_Added = DateTime.Today;
db.WC_Inbox.Add(wC_Inbox);
db.SaveChanges();
SendEmailIQ();
return RedirectToAction("Index");
}
ViewBag.EmployeeID = new SelectList(db.Employees, "ID", "First_Name", wC_Inbox.EmployeeID);
return View(wC_Inbox);
}
我需要将值 fullName
从 GET 方法传递给 POST 方法。有几篇帖子询问如何将数据从一个动作结果传递到另一个动作结果,但我还没有看到这样的帖子。我不知道如何将数据从 GET Create 传递到 POST Create 或如何在发送后检索数据。
您无法在 post 方法中需要数据时从 get 方法发送或检索数据,因为 Get 方法已完成执行并已清理。我建议您在 post 请求发出时在页面上添加一个隐藏字段以 posted 或重新获取 post 请求中的数据。