Как передать список в качестве параметра в url.action?
может ли кто-нибудь помочь мне, как передать список целочисленных значений из представления в контроллер mvc с помощью url.action ??
Вы можете проверить ссылку ниже
http://stackoverflow.com/questions/21785424/how-can-i-use-url-action-with-list-parameters[^]
я уже пробовал. он работает для того, если список имеет одно значение, а не для более одного
@{
var categories = new List<int>() { 6, 7 };
var parameters = new RouteValueDictionary();
для (int i = 0; i < категорий.Граф; ++i)
{
параметры.Добавить("категория[" + я + "]", категории[я]);
}
}
на < а href="@url-адрес.Действий(" тест","домой",="" параметров)"=""&ГТ; нажать
Передать категорию как список строк
public ActionResult Test(List<string> category)
{
возвращение смотреть();
}
Вместо этого введите приведение к “объекту” или “объекту[]” или с помощью RouteValueDictionary. Простой способ добиться того же-использовать “Newtonsoft.Json”
При использовании .Net Core 3.0 или более поздней версии;
По умолчанию используется встроенный System.Text.Реализация парсера Json.
@using System.Text.Json; ……. @Url.Action("ActionName", "ControllerName", new {object = JsonConvert.SerializeObject(‘@ModalObject’) }))
@using Newtonsoft.Json; ….. @Url.Action("ActionName", "ControllerName", new {object = JsonConvert.SerializeObject(‘@ModalObject’) }))
PM> Install-Package Newtonsoft.Json
public ActionResult ActionName(string modalObjectJSON) { Modal modalObj = new Modal(); modalObj = JsonConvert.DeserializeObject<Modal>(modalObjectJSON); }
public ActionResult Index(string[] data) { return View(); }
@{ var qs = HttpUtility.ParseQueryString(""); new List<string>{"one", "two", "three"}.ForEach(s => qs.Add("data", s)); } <a href="@Url.Action("Index", "Home")?@qs">click</a>
@{ ViewBag.name = "xyz"; ViewBag.data = new List<string>{"one", "two", "three"}; var q = HttpUtility.ParseQueryString(""); q.Add("name", ViewBag.name); foreach (var item in ViewBag.data) { q.Add("data", item.ToString()); } } <a href="@Url.Action("Index", "Home")?@q">click</a>
Привет Ф-Эс компания,
@{
var a = новый список<int>();
по каждому элементу (ВАР продукт в ViewBag.сведения)
{
a.добавить(пункт);
}
}
@HTML-код.Сырье(@URL-Адрес.Действий("индекс", "дом", новый { ИД= а имени= ViewBag.название}))
я передаю такой список контроллеру mvc спасибо за решение, но оно не работает для меня.
Это не сработает, я обновил свой ответ альтернативным решением.
это не работает
Это работает для меня, поэтому, если вы изменили или исправили код, который я опубликовал, проблема заключается в том, как вы его изменили.
я делаю то же самое, что и в вашем решении, я ничего не изменил в этом. в контроллере iam получаю строку[] data null
Когда вы просматриваете источник страницы, как выглядит href?
"/Home/Index?name=&data=57"
Вот как это должно выглядеть и работать *пожимание плечами* принимает ли ваше действие get для индекса "string[] data" в качестве параметра? (если вам нужны ints, то это действительно должны быть данные int [], но сначала проще заставить вещи работать со строками).
мой индекс принимает данные list<int> В качестве параметров
Это должен быть массив в соответствии с моим кодом, либо string [], либо int[]
теперь он работает, но берет только первое значение из списка
я изменил list<int> на int [], но он принимает только одно значение
Href должен выглядеть так
/Home/Index?data=1&data=2&data=3
"/Home/Index?data=1&data=2&data=3&name=" это мой href
public ActionResult Index(int[] data,string name)
{
возвращение смотреть();
}
это мой контроллер выглядит так
Превосходно!!
Вы можете использовать
@Url.Action("Index", "home", new { data1 = 0, data2 = 0 })
public ActionResult Index(int data1, int data2) { return View(); }
@Url.Action("Index", "home", new { data = yourintlist })
public ActionResult Index(int[] data) { return View(); }
привет,
представьте, что iam отправляет вот так @Url.Action("Index", "home", new { data = yourintlist })
только вот список не был передан контролеру
Обычно вы помещаете эти списки в модель и передаете ее в свое представление, а затем снова передаете модель контроллеру для внесения изменений. Нет никакого способа создать список внутри вашего контроллера?
Вы используете viebag.данные для хранения данных. Вы можете лучше использовать ViewModel со списком внутри.
Что-то вроде: public List<> a { get; set; }
Вы можете вызвать эту модель и заполнить ее клиентской стороной с помощью: @Model.a.add();
Вам нужно использовать &
для каждого пункта списка.
Что-то вроде,ids=1&ids=2&ids=3
string param = string.empty; foreach(var item in list) { param += "ids=" + item + "&"; } param = param.Remove(param.Length - 1); // remove the last appended & @Url.Action("Action", "Controller", new { data = param });