あり、よりエレガントなMVC /ルーティングソリューションかもしれないが、単純な拡張メソッドは、トリックを行う必要があります。
public static string TokenActionLink(this HtmlHelper html,
string linkText,
string actionName,
string controllerName,
int id,
int token)
{
var anchorFormat = "<a href=\"{0}\">{1}</a>";
var urlFormat = "{0}/{1}/{2}?token={3}";
return string.Format(anchorFormat, string.Format(urlFormat, controllerName, actionName, id, token.ToString()), linkText);
}
使用:
<%: Html.TokenActionLink("Show Me", "Detail", "Product", Model.Id, Model.Token) %>
それともカスタムを作成することもできますRouteValueDictionary:、カスタム
から
ActionLinkメソッドを呼び出してください。
public static string TokenActionLink(this HtmlHelper html,
string linkText,
string actionName,
string controllerName,
int id,
int token)
{
var rvd = new RouteValueDictionary(ViewContext.RouteData.Values);
rvd["Token"] = token.ToString();
return Html.ActionLink(linkText, actionName, controllerName, id, rvd);
}
基本的にはすべて同じように答えている類似の回答がたくさんありますが、これは細心の注意を払うために受け入れられたものです。特に "(!values.ContainsKey(" token "))"となります。簡単なこと... – nathanchere