使用HTML帮助器添加参数的动态列表

问题描述 投票:0回答:1

我希望能够将参数名称和值的列表输入到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 })
   }

产生这样的链接:enter image description here

而我需要参数部分看起来像:

?FromFeed=true&MatchId=1234&InnerId=5678

编辑:通过手动创建标签就可以使它正常工作,但是毫无疑问,通过创建自定义帮助程序,这是一种不错的方法。

 <a href="/@action.Slug/@action.CommunityId/@[email protected]?Fromfeed=true&@parameters">@action.Label</a>
html asp.net-mvc html-helper
1个回答
0
投票

[我建议您使用类似的原型来扩展经典的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);
© www.soinside.com 2019 - 2024. All rights reserved.