Атрибут Маршрутизация в действиях базового класса унаследован от контроллера MVC C # - PullRequest
1 голос
/ 19 марта 2019

Я использую следующую структуру, где я использовал следующую структуру базового класса для реализации представления.

public class Entity1Controller : ClassHelper<Entity1, Enitty1ViewModel>
{
    public Entity1Controller(IObject obj1<Entity1>, IObject1 obj2)
    {
    } 
}

public abstract class ClassHelper<TEntity>, TEntityViewModel> : ClassUtility<TEntity, TEntityViewModel>
{
    public readonly IObject obj1<TEntity>;
    public readonly IObject1 obj2
    public ClassHelper(IObject obj1<TEntity>, IObject1 obj2)
    {
         this.obj1 = obj1;
         this.obj2 = obj2;
    } 
}

public class ClassUtility<TEntity, TEntityViewModel> : Controller
{
    public readonly IObject obj1<TEntity>;
    public readonly IObject1 obj2
    public ClassHelper(IObject obj1<Entity1>, IObject1 obj2)
    {
         this.obj1 = obj1;
         this.obj2 = obj2;
    }

    public ActionResult Index()
    {
        return View();
    }


    [Route("Add")]
    [Route("Edit/{id:int:min(1)}")]
    public ActionResult AddorEditEntity(int id = 0)
    {
        if (id > 0)
        {
            //some code and get the entity
            return PartialView("_AddorEditPartial", entity);
        }

        return PartialView("_AddorEditPartial", new TEntityViewModel());
    }

    //Other Methods
}

Веб-страница по адресу www.localhost.com/Entity1 дает результат представления индекса [как и должно быть], но когда я пытался найти URL с атрибутом маршрутизации, например. www.localhost.com/Entity1/Add или www.localhost.com/Entity1/Edit/1 или www.localhost.com/Entity1/GetAll, как и другие методы. Они не пропускают никаких результатов.

Если я использую условную маршрутизацию в своем адресе [вместо www.localhost.com/Entity1/Add, используя www.localhost.com/Entity1/AddorEditEntity], это приложение отображает представление и показывает веб-результат.

Если я определяю те же методы непосредственно из Контроллера, т.е. используя наследование Контроллера напрямую в Entity1Controller [например, public class Entity1Controller : Controller, вместо базовой модели наследования, показанной выше], файл маршрутизации атрибута работает без заминки.

Я попытался прогуглить его, и узнал, в состоянии DefaultDirectRouteProvider, но это работает только для ApiController. Я хочу использовать то же самое в приложении MVC [т.е. Controller]. так что когда я обращаюсь к методу AddorEditEntity по адресу www.localhost.com/Entity1/Add, он должен отобразить представление.

Пожалуйста, сообщите, возможно ли это.

...