【问题标题】:Adding a dynamic list of parameters with Html helper使用 Html 助手添加动态参数列表
【发布时间】:2020-05-06 09:47:11
【问题描述】:

我希望能够将参数名称和值的列表输入到 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/@action.Controller-@action.ActionName?Fromfeed=true&@parameters">@action.Label</a>

【问题讨论】:

    标签: html asp.net-mvc html-helper


    【解决方案1】:

    我建议您使用类似于此的原型扩展经典的 ActionLink 帮助器(为您的特定类添加参数):

    public static MvcHtmlString ActionLinkCustom(this HtmlHelper html, string linkText, string actionName, string controllerName,  object routeValues, List<ParameterNameValue> yourOtherValues)
    

    在代码中,检查您是否有任何自定义值。如果是这样,请将它们添加到 RouteValuesDictionnary。然后使用提供此修改后的 RouteValuesDictionnary 的经典 ActionLink 帮助器。

    注意:你可以使用这个来处理 routeValues

    IDictionary<string, object> RouteValues = HtmlHelper.ObjectToDictionary(routeValues);
    

    【讨论】:

    • 我会试一试并回复您。谢谢
    猜你喜欢
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    • 2013-10-03
    • 1970-01-01
    • 2016-06-02
    • 2016-04-17
    相关资源
    最近更新 更多