ฉันคิดว่าสิ่งที่คุณต้องการคือ:
ASP.NET MVC1
Html.ActionLink(article.Title,
"Login", // <-- Controller Name.
"Item", // <-- ActionMethod
new { id = article.ArticleID }, // <-- Route arguments.
null // <-- htmlArguments .. which are none. You need this value
// otherwise you call the WRONG method ...
// (refer to comments, below).
)
วิธีนี้ใช้ลายเซ็น ActionLink ของวิธีต่อไปนี้:
public static string ActionLink(this HtmlHelper htmlHelper,
string linkText,
string controllerName,
string actionName,
object values,
object htmlAttributes)
ASP.NET MVC2
มีการโต้แย้งกันสองครั้ง
Html.ActionLink(article.Title,
"Item", // <-- ActionMethod
"Login", // <-- Controller Name.
new { id = article.ArticleID }, // <-- Route arguments.
null // <-- htmlArguments .. which are none. You need this value
// otherwise you call the WRONG method ...
// (refer to comments, below).
)
วิธีนี้ใช้ลายเซ็น ActionLink ของวิธีต่อไปนี้:
public static string ActionLink(this HtmlHelper htmlHelper,
string linkText,
string actionName,
string controllerName,
object values,
object htmlAttributes)
ASP.NET MVC3 +
อาร์กิวเมนต์อยู่ในลำดับเดียวกันกับ MVC2 อย่างไรก็ตามไม่จำเป็นต้องใช้ค่า id อีกต่อไป:
Html.ActionLink(article.Title,
"Item", // <-- ActionMethod
"Login", // <-- Controller Name.
new { article.ArticleID }, // <-- Route arguments.
null // <-- htmlArguments .. which are none. You need this value
// otherwise you call the WRONG method ...
// (refer to comments, below).
)
นี่เป็นการหลีกเลี่ยงการเข้ารหัสโลจิกการกำหนดเส้นทางใด ๆ ลงในลิงก์อย่างหนัก
<a href="/Item/Login/5">Title</a>
นี่จะให้ผลลัพธ์ html ต่อไปนี้ของคุณโดยสมมติว่า:
article.Title = "Title"
article.ArticleID = 5
- คุณยังคงกำหนดเส้นทางต่อไปนี้ไว้
. .
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);