Передача двух параметров в Url.Action в ASP.NET: решение

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Если вы хотите добавить параметры в Url.Action в ASP.NET MVC, выполните следующую команду с анонимным объектом:

csharp
Скопировать код
@Url.Action("Действие", "Контроллер", new { id = 123, name = "Иван" })

Тем самым получится ссылка, включающая параметры в качестве части строки запроса:

HTML
Скопировать код
<a href="@Url.Action("Действие", "Контроллер", new { id = 123, name = "Иван" })">Ссылка</a>

Убедитесь, что наименование параметров соответствует вашим маршрутам.

Подробно о кодировании параметров

Крайне важно контролировать корректное кодирование параметров URL и их правильную интерпретацию в интернете. После использования метода Url.Action проверяйте URL на адекватность, чтобы минимизировать риск неожиданных ошибок.

Совпадение параметров действий контроллера и Url.Action

Параметры из метода Url.Action должны точно соответствовать параметрам действий контроллера. Вот пример кода действия:

csharp
Скопировать код
public ActionResult GetByList(string category, string subcategory)
{
    // код получения списка по категориям
}

Соответствующий вызов Url.Action будет таким:

csharp
Скопировать код
@Url.Action("GetByList", "Products", new { category = "Электроника", subcategory = "Ноутбуки" })

Смотрите за объектом routeValues

Не забудьте о фигурных скобках {} при использовании объекта routeValues — они помагают избегать ошибок при генерации ссылок.

csharp
Скопировать код
<a href="@Url.Action("Действие", "Контроллер", new { id = 123, name = "Иван" })">Ссылка</a>

Используйте стандартные форматы маршрутов

Для конструирования удобной в использовании ссылки применяйте стандартные маршруты. Не забывайте указывать параметр Area, если действие осуществляется в другой части MVC-приложения:

csharp
Скопировать код
@Url.Action("Действие", "Контроллер", new { Area = "Админ", id = 123, name = "Иван" })

Избегайте пробелов (и постоянно тестируйте!)

Пробелы в именах параметров следует избегать. Всегда проверяйте созданные вами ссылки в различных браузерах на их работоспособность.

Остерегайтесь символов и меняющегося регистра

Следите за регистром букв в названиях действий, именах контроллеров и параметров. Старайтеся избегать излишнего употребления кавычек при значениях параметров.

Визуализация

Метод Url.Action работает подобно поиску нужного инструмента в вашем "ящике":

Markdown
Скопировать код
🧰.getTool("🔧", { size: "M", type: "Adjustable" });

В данном случае Url.Action помогает отыскать с указанными параметрами нужное действие:

Markdown
Скопировать код
Url.Action("Download", "Files", new { fileType = "PDF", year = 2021 })
Markdown
Скопировать код
🗂️🔗📥: [📄="PDF", 🕒=2021]

Полезные материалы

  1. Метод UrlHelper.Action (System.Web.Mvc) | Microsoft Learn — официальная документация Microsoft, посвященная методу Url.Action.
  2. HTML-хелперы в ASP.Net MVC — глубокое погружение в мир HTML-хелперов в ASP.NET MVC.
  3. css – Как добавить класс "active" к Html.ActionLink в ASP.NET MVC – Stack Overflow — трения о способах использования метода Url.Action на Stack Overflow.
  4. URL Routing with ASP.NET 4.0 – CodeProject — статья об основах маршрутизации URL в ASP.NET на CodeProject.
  5. Видео на YouTube – Глубокое погружение в маршрутизацию и Url.Action в ASP.NET MVC — детальный обзор работы метода Url.Action.