有可能是一個更優雅的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);
}
我認爲目標是使它自動讓一個沒有記得要隨時添加標記的代碼創建鏈接。 – tvanfosson 2010-11-23 01:10:35
@tvanfosson ...問題不是那麼具體。我只是試圖提供OP可能不知道的ActionLink Helper的細節。 – 2010-11-23 02:35:20