Можно ли поместить имя контроллера в виде строки? - PullRequest
2 голосов
/ 06 мая 2020

Мне было интересно, можно ли поместить имя контроллера в виде строки, как в следующем примере. Кроме того, следует ли вместо этого поместить действие в виде строки? Есть ли лучший подход? Я согласен с тем, что если я изменю имя контроллера по какой-либо причине, мой лучший вариант - выполнить «поиск-замену» во всем проекте, как сейчас. example1

Большое спасибо!

Ответы [ 2 ]

1 голос
/ 07 мая 2020

Как правило, мы напрямую используем имя контроллера и действие в виде строк, как показано ниже:

(Однако эта формулировка не может быть изменена автоматически после изменения имени контроллера, вам нужно изменить вручную )

<a class="nav-link text-dark" asp-controller="Operation" asp-action="Index"> </a>

1. Согласно вашей текущей формулировке, вы можете обновить код следующим образом:

(Это будет динамически меняться при изменении имени контроллера)

<a class="nav-link text-dark" asp-controller="@nameof(OperationController).Replace("Controller","")"  asp-action="@nameof(OperationController.Index)"> link </ a>

2 . В качестве альтернативного решения вы можете добавить атрибут Route к действию, указанному тегом a, и установить имя маршрута.

В теге вам нужно использовать только asp-route для связать соответствующее действие.

Пожалуйста, обратитесь к this .

 <a class="nav-link text-dark" asp-route="MyRouteName"> link </a>

Контроллер:

 public class OperationController: Controller
        {
            [Route ("CustomControllerName/Index", Name="MyRouteName")]
            public IActionResult Index ()
            {
                return View ();
            }
        }
1 голос
/ 07 мая 2020

Да, именно так вы используете помощники тегов привязки. По крайней мере, для меня это действие asp кажется запутанным, и я бы просто написал его как:

  <a asp-controller="Operation" asp-action="Index">...</a>

Если вы измените имя контроллера (что не должно происходить очень часто), тогда у вас будет для обновления ссылок.

Для получения дополнительной информации см. https://docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/built-in/anchor-tag-helper?view=aspnetcore-3.1: «Если атрибут asp -controller указан, а asp -action нет, то значение по умолчанию asp -action value - это действие контроллера, связанное с текущим выполняющимся представлением. [...] Если значение атрибута asp -action - Index, то к URL-адресу не добавляется никакое действие, что приводит к вызову действия Index по умолчанию . Указанное действие (или значение по умолчанию) должно существовать в контроллере, указанном в asp -controller. "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...