ฉันสามารถมีหน้า default.aspx ในไซต์ MVC ได้หรือไม่

ฉันมีไซต์ WebForms ดั้งเดิมที่มีหน้า Default.aspx ที่กำหนดค่าใน IIS ให้เป็นหน้าเริ่มต้น ดังนั้น เมื่อมีคนไปที่ mysite.com พวกเขา เห็น mysite.com/Default.aspx แต่ URL ในแถบที่อยู่จะแสดงเฉพาะ mysite.com

ฉันเพิ่ม MVC ลงในไซต์แล้ว และฉันต้องการค่อยๆ ย้ายฟังก์ชันการทำงานไปยัง MVC ทุกอย่างใช้งานได้ แต่รูทเพจพัง: การนำทางไปยังเส้นทางทำให้เกิด 404 เนื่องจากเส้นทางเริ่มต้นตรงกับรูทและพยายามกำหนดเส้นทางตัวควบคุมหน้าแรก แต่ไม่มีเลย ดังนั้นฉันจึงเพิ่มอันที่ทำสิ่งนี้:

' GET: /Home
Function Index() As ActionResult
    'jump to the go page
    Return Redirect("/default.aspx")
End Function

ซึ่งตอนนี้ใช้งานได้แล้ว ยกเว้นเมื่อคุณนำทางไปยังเส้นทางนั้น มันจะแสดง mysite.com/Default.aspx ในแถบที่อยู่

ฉันต้องการถ้า:

  • ฉันไม่สามารถจับคู่เส้นทางรูทได้ และปล่อยให้เพจ WebForms Default.aspx จัดการได้เหมือนเมื่อก่อน
  • ฉันสามารถกำหนดเส้นทางได้เหมือนที่กำลังทำอยู่ แต่ทำให้หน้า Default.aspx ไม่แสดงในแถบที่อยู่

เป็นไปได้อย่างใดอย่างหนึ่งหรือไม่?


person Joshua Frank    schedule 17.01.2014    source แหล่งที่มา


คำตอบ (1)


มันเป็นไปได้.

ในการกำหนดค่าเส้นทางของคุณ ให้ถอดตัวควบคุมในพารามิเตอร์เริ่มต้นออก จากนี้:

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

สำหรับสิ่งนี้:

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { action = "Index", id = UrlParameter.Optional }
);

จากนั้นเพิ่ม Default.aspx ไปยังรูทโปรเจ็กต์ของคุณ

person LostInComputer    schedule 19.01.2014
comment
ทำงานได้อย่างสมบูรณ์แบบ ขอบคุณ! - person Joshua Frank; 20.01.2014