나는 당신이 원하는 것이 이것이라고 생각합니다.
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
);