Как применить динамическое имя контроллера внутри @ Url.Action в MVC - PullRequest
0 голосов
/ 28 мая 2019

В моем приложении DOT NET CORE MVC я использую Url Action внутри представления для генерации и перенаправления ссылки действия

@Url.Action ("Action Name","Controller Name")

Выше synatax работает нормально для меня, где я передаю статическое значение контроллера, как

'@Url.Action(nameof(EmployeeController.Edit),"Employee")'

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

'@Url.Action(nameof(EmployeeController.Edit),nameof(EmployeeController))'

Контроллер и метод действия:

public class EmployeeController : Controller
    {
        public IActionResult Index()
        {
            return View();
        }

        public IActionResult Edit()
        {
            return RedirectToAction("Index", "HotelList", new { area = "Hotel" });
        }
    }

Предложите мне лучший способ сделать это

Заранее спасибо

1 Ответ

1 голос
/ 28 мая 2019

По соглашению классы контроллеров заканчиваются словом Controller, но ссылки на них для целей URL - нет.(Честно говоря, до сих пор мне никогда не приходило в голову такое несоответствие.) Вероятно, лучше не связываться с этим соглашением, поскольку оно может касаться других проблем.Вместо этого, возможно, просто измените строку, используемую в результате.

Примерно так:

nameof(EmployeeController).Replace("Controller", string.Empty)

Если это используется часто, возможно, инкапсулируйте его в метод помощника или расширения где-нибудь дляпростота.

...