วิธีใช้ ActionLink เพื่อไปที่หน้าอื่น asp.net MVC

สวัสดี ฉันมีลิงก์การดำเนินการอยู่ที่ http://localhost:1338/Tags/InternalTag/Test ซึ่งผมอยากให้ลิงค์ไปที่ http://localhost:1338/News/News/DisplayArticle?ArticleID=b491bee6-772c-4184-804a-13e53e50aa3d

ฉันใช้ <%: Html.ActionLink("Test", "DisplayArticle", "News")%> แต่ผลลัพธ์ที่ได้คือ http://localhost:1338/Tags/News/DisplayArticle


person David    schedule 05.01.2011    source แหล่งที่มา


คำตอบ (1)


หลังจากอ่านอีกครั้ง ฉันคิดว่าอาจต้องการข้อมูลเพิ่มเติม แต่นี่คือสิ่งที่ฉันแนะนำจนถึงตอนนี้

ฉันสมมติว่า InternalTags เป็นตัวควบคุมของคุณ และการทดสอบคือการกระทำของคุณ

หากต้องการให้มี ArticleID ใน URL คุณต้องเพิ่ม ArticleID เป็น "routeValue"

แต่สิ่งนี้จะไม่แก้ไขได้อย่างสมบูรณ์

เพจของคุณอยู่ในแท็ก/InternalTag/Test

ลิงก์ของคุณในหน้าทดสอบของคุณถูกกำหนดเป็น:

<%: Html.ActionLink("Test", "DisplayArticle", "News")%>

จะแก้ไขเป็น: http://localhost:1338/Tags/News/DisplayArticle

หากคุณเพิ่ม ArticleID ให้กับลิงก์ (ตามด้านล่าง):

<%: Html.ActionLink("Test", "DisplayArticle", "News", new {ArticleID = "b491bee6-772c-4184-804a-13e53e50aa3d"}, null)%>

อีกทางหนึ่ง:

<%: Html.ActionLink("Test", "DisplayArticle", new {Controller="News", ArticleID = "b491bee6-772c-4184-804a-13e53e50aa3d"})%>

การดำเนินการนี้จะแก้ไขเป็น Tags/News/DisplayArticle?ArticleID={GUID}

ในกรณีที่ฉันพลาดบางสิ่งบางอย่าง ฉันจะกล่าวถึงมุมอื่น:

สำหรับฉัน แท็กคือไซต์ที่คุณเข้าชม ซึ่งจะทำให้ News เป็นไซต์ที่แตกต่างไปจากเดิมอย่างสิ้นเชิง หากคุณต้องการไปที่นั่น คุณจะต้องฮาร์ดโค้ดลิงก์ของคุณเป็น: http://localhost:1338/News/ข่าว/DisplayArticle?ArticleID=b491bee6-772c-4184-804a-13e53e50aa3d.

หากเป็นไซต์เดียวกัน คุณจะต้องจัดเรียงเส้นทางใน Global.asax ของคุณ

บางทีคุณสามารถแสดงความคิดเห็นกับคำตอบของฉันได้และฉันจะแก้ไขตามนั้น

แก้ไขหลังจากความคิดเห็นที่ 1: หากคุณสามารถจัดทำแผนที่เส้นทางได้อย่างถูกต้อง การใช้ลิงก์การดำเนินการบ่อยครั้งก็เพียงพอแล้วในการเลือกเส้นทางที่ถูกต้อง โดยจะต้องดูว่าเส้นทางของคุณแสดงไว้อย่างไร และเปลี่ยนลำดับและค่าเริ่มต้น ค่าที่ใช้เพื่อให้แน่ใจว่าลายเซ็นมีความเฉพาะเจาะจงเพียงพอที่จะเลือกเส้นทางที่คุณต้องการ

หากต้องการบังคับให้เส้นทางไปยังตัวเลือกเฉพาะ คุณสามารถใช้ Html.RouteLink(linkText,routeName,routevalues)

ซึ่งจะช่วยให้คุณสามารถควบคุมเส้นทางที่แน่นอนที่คุณต้องการใช้ จากนั้นส่งผ่านค่าเส้นทางสำหรับตัวควบคุม การดำเนินการ และ ArticleID

person Luke Duddridge    schedule 05.01.2011
comment
สวัสดีคุณพูดถูก...ฉันคิดว่าเพราะว่าเรามีการลงทะเบียนที่แตกต่างกันสำหรับส่วนต่างๆ ของเว็บไซต์ของเรา สำหรับฉันพวกเขาเป็น 1 เว็บไซต์นั่นคือ localhost:1337 แต่แท็กของฉันมี maproute ที่แตกต่างไปจากข่าวนั่นคือเหตุผลว่าทำไมมันถึง localhost:1338/ ข่าว และ localhost:1338/Tags - person David; 07.01.2011