Я нашел десятки потоков о получении имени контроллера и метода на основе URL, мне это тоже удалось.Могу ли я получить MethodInfo метода на основе их имени автоматически из механизма MVC, или я должен сделать Type.GetType("Namespace.Controllers."+cname+"Controller").GetMethod(mname)
?Что не так приятно, так как откуда я знаю пространство имен в классе фреймворка?Как узнать, соблюдаются ли шаблоны именования по умолчанию, или же используется другая конфигурация?
Я хочу получить результат " Что будет выполнять MVC? " ...
Возможно ли это?
РЕДАКТИРОВАТЬ: дополнительная информация:
У меня есть фреймворк, в котором используются переводимые URL-адреса, управляемые данными, и имеется собственное изменение URL-адреса.Теперь он отлично работает, когда я хочу показать URL-адрес новостного объекта, я просто пишу @Url.Content("~/"+@Model.Link)
, и он отображает «SomeNewsCategory / SomeNews» вместо «News / 29» в URL, без необходимости изменять RouteTable.Маршруты динамически.Однако, в свою очередь, возникает проблема, когда я пытаюсь записать RedirectToAction("SomeStaticPage","Contact");
в контроллер.Для этого мне нужно зарегистрировать статическую ссылку в db, задать ей цель "/ SomeStaticPage / Contact", а затем написать Redirect("~/"+DB.Load(linkid).Link);
, и это просто нехорошо, когда у меня 30 таких идентификаторов.Парень из команды веб-программистов начал регистрировать «фальшивые URL», которые выглядели так:
public class FakeURL
{
public string Controller;
public string Action;
public int LinkID;
}
, а затем он использовал их как Redirect(GetFakeUrl("controller","action"));
, что и помогло, но все же было нехорошо.Это заставило меня задуматься: если я применяю атрибут [Link(linkid)]
к каждому статически связанному методу, то переопределяет метод RedirectToAction в базовом контроллере , и когда он пишет ReturnToAction("action","controller"
), я на самом деле посмотрюатрибут, загрузите URL и т. д. Но мне еще предстоит найти способ получить methodInfo, основанный на именах контроллера и действия или их URL.
EDIT : Я сам написал отражение, , единственное, чего не хватает, это получить сборку моего приложения из помощника бритвы , потому что CallingAssembly - это динамически скомпилированная сборка .cshtml., а не мое веб-приложение.Могу ли я как-нибудь это получить?