ASP.NET MVC - Передайте объект массива как значение маршрута в HTML. ActionLink (…)

Я бы выделил его в другую группу захвата следующим образом:

(?i)(?P<g1>5?4?G)\sDL\s(?P<g2>[^\s]*)\sUP\s(?P<g3>[^\s]*)

(?i) делает все регулярное выражение нечувствительным к регистру

(?P<g1>5?4?G) является первым сопоставление групп на 4g, 5g, 4G или 5G.

(?P<g2>[^\s]*) - вторая и третья группы, совпадающие по всему, что не является пробелом.

Затем в Python вы можете сделать:

match = re.match('(?i)(?P<g1>5?4?G)\sDL\s(?P<g2>[^\s]*)\sUP\s(?P<g3>[^\s]*)', input)

И получить доступ к каждой группе следующим образом:

match.group('g1') и т. Д.

39
задан tvanfosson 4 April 2009 в 20:07
поделиться

2 ответа

Попытайтесь создать RouteValueDictionary, содержащий Ваши значения. Необходимо будет дать каждой записи различный ключ.

<%  var rv = new RouteValueDictionary();
    var strings = GetStringArray();
    for (int i = 0; i < strings.Length; ++i)
    {
        rv["str[" + i + "]"] = strings[i];
    }
 %>

<%= Html.ActionLink( "Link", "Action", "Controller", rv, null ) %>

даст Вам ссылку как

<a href='/Controller/Action?str=val0&str=val1&...'>Link</a>

Править: MVC2 изменил интерфейс ValueProvider для создания моего исходного ответа устаревшим. Необходимо использовать модель с массивом строк как свойство.

public class Model
{
    public string Str[] { get; set; }
}

Затем образцовый редактор связей заполнит Вашу модель со значениями, которые Вы передаете в URL.

public ActionResult Action( Model model )
{
    var str0 = model.Str[0];
}
13
ответ дан tvanfosson 27 November 2019 в 02:54
поделиться

Я использовал бы POST для массива. Кроме того, чтобы быть ужасным и злоупотребление ДОБИРАЮТСЯ, Вы рискуете заканчиваться пространство URL (хотите верьте, хотите нет).

Принятие 2 000-байтового предела. Строка запроса наверху (&str =) уменьшает Вас до ~300 байтов фактических данных (предполагающий, что остальная часть URL составляет 0 байтов).

-6
ответ дан Greg Dean 27 November 2019 в 02:54
поделиться
Другие вопросы по тегам:

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