在嘗試重定向到視圖時需要一些幫助。
我有一個名為 Jobs/Index 的視圖/操作 簡而言之,這個視圖抓取了一個員工串列,我為每個員工添加了一個按鈕,以便他們可以點擊查看分配給他們的作業。每個按鈕執行 Jobs/EmployeeJobs/Id,ID 取決于他們的員工 ID。
我有一個視圖/操作,即jobs/EmployeeJobs/2。此視圖顯示了分配給 ID 為 2 的員工的所有作業的串列,但顯然會根據員工的不同而改變。
所以,在那個頁面上,我有我的 EDIT、DETAILS 和 DELETE 按鈕。他們都作業正常。但是,當我嘗試編輯一些作業資訊并單擊保存時。我的 URL 將我定向到 https://localhost:44327/Jobs。
當用戶點擊保存時,我希望被重定向回該員工的視圖,例如 https://localhost:44327/Jobs/EmployeeJobs/2。
這是我的 Jobs Controller 中的 EmployeeJobs/2 操作
`public async Task<IActionResult> EmployeeJobs(int? id)
{
var jobs = await _context.Jobs
.Include(j => j.Clients)
.Include(j => j.Employees)
.Include(j => j.Stage1)
.Include(j => j.Stage2)
.Include(j => j.Substages)
.Include(j => j.Substages2).Where(m => m.Employees.Id == id)
.ToListAsync();
return View(jobs);
}`
這是我在 Jobs Controller 或 (POST) 中的 Edit/5 Action
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Edit(int id, [Bind("Id,JobNumber,Address,ClientID,StaffId,Notes,Stage1Id,Stage2Id,SubstagesId,Substages2Id,ConceptRequired,ConceptScheduleDate,ConceptSent,RevisionReceived,RevisionCompleted,ConceptApproved,MarketingRequired,MarketingScheduleDate,MarketingSent,MarketingCompleted,RenderRequired,RendererId,RenderSent,RenderReceived,ResourceRequired,PlannerId,ResourceScheduleDate,ResourceSent,ResourceCommentsReceived,ResourceCommentsCompeted,ResourceApproved,WorkingScheduleDate,WorkingCompleted,ReviewCompleted,TrussRequired,TrussId,TrussSent,TrussReceived,EngineerRequired,EngineerId,EngineerSent,EngineerReceived,ClientApprovalSent,ClientApprovalReceived,CouncilSubmission,CouncilId,BCNumber,RFIReceived,RFICompleted,BCGranted,AmendmentRequired,AmendmentScheduleDate,AmendmentCompleted,JobCompleted")] Jobs jobs)
{
if (id != jobs.Id)
{
return NotFound();
}
if (ModelState.IsValid)
{
try
{
_context.Update(jobs);
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!JobsExists(jobs.Id))
{
return NotFound();
}
else
{
throw;
}
}
return RedirectToAction("EmployeeJobs", new { id = id });
//return RedirectToAction("EmployeeJobs", new RouteValueDictionary(
// new { controller = "Jobs", action = "EmployeeJobs", id = id }));
}
return View(jobs);
}
如您所見,我多次嘗試了兩種方法或 RedirectToAction。奇怪的是,如果我的代碼是
return RedirectToAction("EmployeeJobs", new { id = 2 });
此代碼將帶我回到 ID 為 2 的員工。所以希望有人可以幫助我,請放輕松我對編碼還很陌生
這是來自我的作業模型的相關資訊
public class Jobs
{
public int Id { get; set; }
[Display(Name = "Job Number")]
[Required]
public int JobNumber { get; set; }
public string Address { get; set; }
// FK
[Display(Name = "Client")]
[ForeignKey("Clients")]
public int ClientID { get; set; }
// FK
[Display(Name = "Employee")]
[ForeignKey("Employees")]
public int StaffId { get; set; }
public string Notes { get; set; }
public virtual Clients Clients { get; set; }
public virtual Employees Employees { get; set; }
}
這是我的員工模型中的代碼
public class Employees
{
public int Id { get; set; }
[Display(Name = "First Name")]
[RegularExpression(@"^[A-Z] [a-zA-Z\s]*$")]
[StringLength(20, MinimumLength = 3)]
[Required]
public string FirstName { get; set; }
[Display(Name = "Last Name")]
[RegularExpression(@"^[A-Z] [a-zA-Z\s]*$")]
[StringLength(20, MinimumLength = 3)]
[Required]
public string LastName { get; set; }
[Display(Name = "Contact Number")]
[StringLength(15, MinimumLength = 8)]
[Required]
public string ContactNumber { get; set; }
[StringLength(80, MinimumLength = 3)]
[Required]
public string Email { get; set; }
}
uj5u.com熱心網友回復:
嘗試回傳一個空視圖,而不必像這樣將引數傳遞給它
return View();
uj5u.com熱心網友回復:
我認為當您查詢 db 時,您的索引操作中存在錯誤。這就是它不能回傳新視圖的原因。您正在將員工 ID 與作業 ID 混合在一起。對于 id=2,您有一個員工的 ID =2 ,那么為什么它僅適用于 id=2 ;
并且您的索引操作有一個非常令人困惑的查詢,并且它不是異步的。
嘗試這個
var jobs = await _context.Jobs
.Include(j => j.Clients)
.Include(j => j.Employees)
.Include(j => j.Stage1)
.Include(j => j.Stage2)
.Include(j => j.Substages)
.Include(j => j.Substages2)
.Where(m => m.Employees.Id == id)
.ToListAsync();
return View(jobs);
但我想知道這怎么可能被編譯
.Include(j => j.Employees)
.....
.Where(m => m.Employees.Id == id)
員工是一個人嗎?
更新
看到你的作業課后,我認為你的位置還可以,但你也可以使用這個
.Where(m => m.StaffId == id)
并修復您的編輯操作
return RedirectToAction("EmployeeJobs", new { id = job.StaffId });
現在它應該可以作業了
uj5u.com熱心網友回復:
你說如果你像下面這樣對 Id 進行硬編碼,那么它就可以作業:
return RedirectToAction("EmployeeJobs", new { id = 2 });
然后試試這個:
return RedirectToAction("EmployeeJobs", "Jobs", new { id = jobs.StaffId });
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/333222.html
標籤:C# asp.net-mvc 模型视图控制器 重定向到操作
下一篇:如何在一個日期之間選擇日期范圍?
