我希望能够将参数名称和值的列表输入到Html.Actionlink中,但帮助程序不会按照我的意愿创建参数。任何想法如何做到这一点?
public class ParameterNameValue
{
public string ParameterName { get; set; }
public string ParameterValue { get; set; }
}
查看
@foreach (var action in post.FeedActions)
{
var parameters = "";
foreach (var param in action.Parameters)
{
parameters += param.ParameterName + "=" + param.ParameterValue + ",";
}
@Html.ActionLink(@action.Label, action.ActionName,
new { controller = action.Controller, id = action.CommunityId, slug = action.Slug,
Fromfeed=true,parameters }, new { @class = action.Classes })
}
而我需要参数部分看起来像:
?FromFeed=true&MatchId=1234&InnerId=5678
编辑:通过手动创建标签就可以使它正常工作,但是毫无疑问,通过创建自定义帮助程序,这是一种不错的方法。
<a href="/@action.Slug/@action.CommunityId/@[email protected]?Fromfeed=true&@parameters">@action.Label</a>
[我建议您使用类似的原型来扩展经典的ActionLink帮助器(为您的特定类添加一个参数):
public static MvcHtmlString ActionLinkCustom(this HtmlHelper html, string linkText, string actionName, string controllerName, object routeValues, List<ParameterNameValue> yourOtherValues)
在代码中,检查是否有任何自定义值。如果这样,请将其添加到RouteValuesDictionnary。然后使用经典的ActionLink帮助器提供此修改后的RouteValuesDictionnary。
注意:您可以使用此方法处理routeValues]
IDictionary<string, object> RouteValues = HtmlHelper.ObjectToDictionary(routeValues);