Добавление динамического c списка параметров с помощью Html хелпера - PullRequest
0 голосов
/ 06 мая 2020

Я хотел бы иметь возможность передавать список имен и значений параметров в 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

edit: Я заставил это работать, просто вручную создав тег, но, без сомнения, есть хороший способ сделать это, создав собственный помощник.

 <a href="/@action.Slug/@action.CommunityId/@action.Controller-@action.ActionName?Fromfeed=true&@parameters">@action.Label</a>

1 Ответ

0 голосов
/ 06 мая 2020

Я бы посоветовал вам расширить помощник classi c ActionLink прототипом, подобным этому (добавьте параметр для вашего специфицированного c класса):

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

В коде проверьте если у вас есть собственные значения. Если это так, добавьте их в RouteValuesDictionnary. Затем используйте помощник classi c ActionLink, предоставляющий этот измененный RouteValuesDictionnary.

Примечание: вы можете работать с routeValues, используя это

IDictionary<string, object> RouteValues = HtmlHelper.ObjectToDictionary(routeValues);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...