เป็นไปได้ไหมที่จะเปลี่ยนเส้นทางไปยังมุมมองอื่นจากคอนโทรลเลอร์
ตัวอย่างเช่นคอนโทรลเลอร์ทั้งหมดของฉันสืบทอดมาจากคอนโทรลเลอร์แบบกำหนดเองที่มีตัวสร้างที่ฉันต้องการเปลี่ยนเส้นทางไปยังมุมมองอื่นหากไม่ตรงตามเกณฑ์บางอย่าง หวังว่าจะสมเหตุสมผล
เป็นไปได้ไหมที่จะเปลี่ยนเส้นทางไปยังมุมมองอื่นจากคอนโทรลเลอร์
ตัวอย่างเช่นคอนโทรลเลอร์ทั้งหมดของฉันสืบทอดมาจากคอนโทรลเลอร์แบบกำหนดเองที่มีตัวสร้างที่ฉันต้องการเปลี่ยนเส้นทางไปยังมุมมองอื่นหากไม่ตรงตามเกณฑ์บางอย่าง หวังว่าจะสมเหตุสมผล
คำตอบ:
คุณสามารถใช้RedirectToAction()
วิธีนี้จากนั้นการดำเนินการที่คุณเปลี่ยนเส้นทางจะสามารถส่งคืนมุมมอง วิธีที่ง่ายที่สุดคือ:
return RedirectToAction("Index", model);
จากนั้นในวิธี Index ของคุณให้ส่งกลับมุมมองที่คุณต้องการ
if (true)
{
return View();
}
else
{
return View("another view name");
}
วิธีที่ง่ายที่สุดคือใช้ return View
return View("ViewName");
โปรดจำไว้ว่าชื่อจริงของ "ViewName" ควรเป็นชื่อ ViewName.cshtml ในโปรเจ็กต์ของคุณหากคุณใช้ MVC C # / .NET
ฉันไม่แน่ใจ 100% ว่าเงื่อนไขนี้คืออะไร แต่สำหรับฉันข้างต้นไม่ได้ผลโดยตรงคิดว่ามันใกล้เข้ามาแล้ว ฉันคิดว่าเป็นเพราะฉันต้องการ "id" สำหรับมุมมองของฉันโดยในโมเดลเรียกว่า "ObjectID"
ฉันมีโมเดลที่มีข้อมูลมากมาย ฉันแค่ต้องการรหัส
ก่อนหน้านี้ฉันได้สร้างออบเจ็กต์ System.Web.Routing.RouteValueDictionary ใหม่และเพิ่ม id ที่ต้องการ
(System.Web.Routing.)RouteValueDictionary RouteInfo = new RouteValueDictionary();
RouteInfo.Add("id", ObjectID);
return RedirectToAction("details", RouteInfo);
(หมายเหตุ: โครงการ MVC ที่เป็นปัญหาที่ฉันไม่ได้สร้างดังนั้นฉันจึงไม่รู้ว่าบิตที่ "ยุ่ง" อยู่ตรงไหน)
สิ่งที่คุณทำได้มีดังนี้
return View("another view name", anotherviewmodel);