หลาย RoutePrefixes ต่อคอนโทรลเลอร์โดยใช้การกำหนดเส้นทางแอตทริบิวต์ MVC

ด้วยการกำหนดเส้นทางแอตทริบิวต์ MVC ใหม่ ฉันรู้ว่าคุณสามารถกำหนดแอตทริบิวต์ Route หลายรายการให้กับ ActionResult เดียวได้ แต่ฉันกำลังมองหาวิธีที่จะทำเช่นเดียวกันที่ระดับ RoutePrefix ฉันมีคอนโทรลเลอร์ซึ่งในทุกการกระทำควรสามารถเข้าถึงได้ด้วยสามเส้นทาง:

/Games/{Title}/Characters/{Route} /Books/{Title}/Characters/{Route} /Cinema/{Title}/Characters/{Route}

ฉันพยายามใส่แอตทริบิวต์ RoutePrefix สามรายการ แต่ได้รับข้อผิดพลาด Deuplace RoutePrefix attribute หากฉันพยายามใช้รายการที่คั่นด้วยเครื่องหมายจุลภาค ฉันจะได้ Best override method for does not contain a constructor that takes 3 arguments

เป็นไปได้ไหมที่จะตั้งค่า RoutePrefix เพื่อให้ใช้สามเส้นทางที่ฉันต้องการสำหรับคอนโทรลเลอร์ของฉัน


person Matthew Verstraete    schedule 29.06.2014    source แหล่งที่มา


คำตอบ (1)


จากการทดสอบหลายครั้ง ฉันพบว่าฉันสามารถเพิ่มแอตทริบิวต์ 3 Route ให้กับระดับคอนโทรลเลอร์ได้ และทำงานได้ตามที่ฉันต้องการ

แก้ไข: ฉันพบวิธีที่ดีกว่าในการดำเนินการคือการใช้วิธีการจับคู่ regex

[RoutePrefix("{Type:regex(Games|Cinema|Books)}/{SectionRoute}/Character/")]

person Matthew Verstraete    schedule 29.06.2014
comment
คุณจะทำอย่างไรถ้าไม่มี regex? ฉันสามารถเพิ่มบรรทัดแอตทริบิวต์หลายรายการได้หรือไม่ [RoutePrefix("prefix1")] [RoutePrefix("prefix2")] - person Zapnologica; 28.10.2015
comment
@Zapnologica ฉันทำสิ่งนี้มานานแล้ว แต่ถ้าฉันจำได้ถูกต้องคุณจะทำเหมือนตัวอย่างของคุณหรือคุณคั่นด้วยเครื่องหมายจุลภาคเช่น [RoutePrefix("prefix1"), RoutePrefix("prefix2")] ลองทั้งคู่แล้วดูว่าเกิดอะไรขึ้น - person Matthew Verstraete; 28.10.2015
comment
อย่าคิดว่ามันเป็นไปได้ มันจะโยนแอตทริบิวต์ RoutePrefix ที่ซ้ำกัน - person user1961100; 29.10.2015
comment
และฉันคิดว่าคุณควรใส่เครื่องหมายปิด $ ที่ท้ายแต่ละสตริงเพื่อไม่อนุญาต Gamesssdlasd, Cinemasasdasd ฯลฯ [RoutePrefix("{Type:regex(Games$|Cinema$|Books$)}/{SectionRoute}/Character/")] - person Okan Kocyigit; 16.02.2018
comment
github.com/asadmalik3/WebApiMultipleRoutePrefixAttribute ซึ่งอนุญาตให้มีหลายเส้นทาง Prefix - person SatanEnglish; 27.02.2018