ASP.Net MVC RouteData и массивы

Это - просто Microsoft, являющаяся развязным. "Удержанный от использования" подразумевает функцию языка, которая не может быть обеспечена в будущих версиях стандартного языка / стандартные библиотеки, как установлено декретом комитетом по стандартам. Это не делает или не должно означать, "мы, в одностороннем порядке, не думаем, что необходимо использовать его", неважно, как обоснованный, который совет.

24
задан puffpio 18 November 2009 в 00:15
поделиться

3 ответа

Я думаю, что вам подойдет специальный HtmlHelper.

 public static string ActionLinkWithList( this HtmlHelper helper, string text, string action, string controller, object routeData, object htmlAttributes )
 {
     var urlHelper = new UrlHelper( helper.ViewContext.RequestContext );


     string href = urlHelper.Action( action, controller );

     if (routeData != null)
     {
         RouteValueDictionary rv = new RouteValueDictionary( routeData );
         List<string> urlParameters = new List<string>();
         foreach (var key in rv.Keys)
         {
             object value = rv[key];
             if (value is IEnumerable && !(value is string))
             {
                 int i = 0;
                 foreach (object val in (IEnumerable)value)
                 {
                     urlParameters.Add( string.Format( "{0}[{2}]={1}", key, val, i ));
                     ++i;
                 }
             }
             else if (value != null)
             {
                 urlParameters.Add( string.Format( "{0}={1}", key, value ) );
             }
         }
         string paramString = string.Join( "&", urlParameters.ToArray() ); // ToArray not needed in 4.0
         if (!string.IsNullOrEmpty( paramString ))
         {
            href += "?" + paramString;
         }
     }

     TagBuilder builder = new TagBuilder( "a" );
     builder.Attributes.Add("href",href);
     builder.MergeAttributes( new RouteValueDictionary( htmlAttributes ) );
     builder.SetInnerText( text );
     return builder.ToString( TagRenderMode.Normal );
}
20
ответ дан 29 November 2019 в 00:13
поделиться

Я не на своей рабочей станции, но как насчет чего-то вроде:

<%= Html.ActionLink("click here", "DoMoreStuff", "MoreStuffController", new { stuff = (List<T>)ViewData["stuff"] }, null) %>

или набранного:

<%= Html.ActionLink("click here", "DoMoreStuff", "MoreStuffController", new { stuff = (List<T>)ViewData.Model.Stuff }, null) %>
-2
ответ дан 29 November 2019 в 00:13
поделиться

вы можете суффиксовать ваши routevalues с индексом массива таким образом:

RouteValueDictionary rv = new RouteValueDictionary();
rv.Add("test[0]", val1);
rv.Add("test[1]", val2);

это приведет к тому, что квестринг, содержащий test=val1&test=val2

, будет содержать , что может помочь ?

.
4
ответ дан 29 November 2019 в 00:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: