Внимание! Это перевод вопроса How to use C# nameof() with ASP.NET MVC Url.Action
Мне не нравится писать строки в выражениях вида:
Url.Action("ActionName", "Home") <------ так работает
Хочется строгой типизации наподобие:
Url.Action(nameof(ActionName), nameof(HomeController)) <----- так не работает :(
Первый вариант. Используйте метод расширения:
public static string UrlName(this Type controller)
{
var name = controller.Name;
return name.EndsWith("Controller") ? name.Substring(0, name.Length - 10) : name;
}
Пример использования:
Url.Action(nameof(ActionName), typeof(HomeController).UrlName())
Второй вариант:
public static class ControllerExtensions
{
public static string Action<T>(this Controller controller, string actionName)
where T : Controller
{
var name = typeof(T).Name;
string controllerName = name.EndsWith("Controller")
? name.Substring(0, name.Length - 10) : name;
return controller.Url.Action(actionName, controllerName);
}
}
Пример использования:
this.Action<HomeController>(nameof(ActionName));
Виртуальный выделенный сервер (VDS) становится отличным выбором
Товарищи, тут возникла следующая проблемка: имею в VS проект на С#, в котором имеется статический класс, в статическом инициализаторе которого...
Как задать направление гравитации по оси Z для частиц Particle System в Unity используя С#Желательно чтобы ось Z синхронизировалась с осью Z другого...
В общем, при открытии документа я заметил, что может происходить 2 проблемы: