Как получить доступ к текущему параметру маршрута из URL и ссылаться на него на странице просмотра asp.net

Я только что сделал новый маршрут:

  routes.MapRoute(
  name: "example",
  url: "{example}/{details}/{id}",
  defaults: new { controller = "example", action = "Index", id = UrlParameter.Optional }
  );

Маршрут работает нормально, но я не знаю, как сослаться на какой "идентификатор", на котором я сейчас нахожусь, поэтому я могу отображать правильную информацию на странице просмотра "Детали" для указанного "идентификатора" на моем маршруте.

Для большего контекста у меня есть базовая "примерная" страница, на которой я отображаю пользователей из базы данных, и у каждого из них есть "ID", связанный с ними, при щелчке по их именам он затем берет "ID" и переходит в /example/ детали /{идентификатор пользователя, на который я только что нажал} (это работает), теперь мне нужно знать, как показать информацию о пользователях для указанного маршрута.

контроллер:

public ActionResult Details()
{
    var example = from a in db.Example
                  where a.ExamplePresent
                  orderby a.ExampleName
                  select a;
    return View(example.ToList());
}

Посмотреть:

@model List<Example.Areas.ExamplePage.Models.Example>
@{
    ViewBag.Title = "Example Page";
}

1 ответ

Решение

Если вы не хотите создавать модель представления для этого случая, вы можете передать параметр id и список в представление через кортеж и ссылаться на него в представлении следующим образом:

public IActionResult Details(int id)
{

    var example = from a in db.Example
              where a.ExamplePresent
              orderby a.ExampleName
              select a;
    return View(Tuple.Create(id, example.ToList()));
}

Посмотреть

@model Tuple<int, List<Example.Areas.ExamplePage.Models.Example>>

@{
    ViewData["Title"] = "Details";
}

<h2>id: @Model.Item1</h2>

И ваш список примеров:

@Model.Item2

Более правильным способом было бы создание модели представления для подробного просмотра и передача ваших значений через модель представления:

ViewModel:

public class DetailsViewModel
{
    public int Id {get;set;}
    public IList<Example.Areas.ExamplePage.Models.Example> Examples {get;set;}
}

действие:

public IActionResult Details(int id)
{

    var example = from a in db.Example
          where a.ExamplePresent
          orderby a.ExampleName
          select a;
    return View(new DetailsViewModel{ Id = id, Examples = example.ToList() });
}

Посмотреть:

@model DetailsViewModel

@{
    ViewData["Title"] = "Details";
}

<h2>id: @Model.Id</h2> // your list is @Model.Examples
Другие вопросы по тегам