Управление RouteValueDictionary в RouteConstraint

Допустим, у меня есть маршрут; www.kunduz.com/stuff/something

где "что-то" проверяется на соответствие ограничениям маршрута;

 public class AnalysisTypePathRouteConstraint : IRouteConstraint
{
    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
    {
       //check if "something" is really something
    }
}

и скажем, что материал имеет такую ​​структуру

public class Stuff
{
     public int Id{get;set;}
     public string name {get;set;}
     //some other properties
}

Учтите, что объект Stuff - это не просто запись в БД, а скорее тип. Мол, если бы это был сайт электронной коммерции, это могли быть "автомобили" или "мебель".

Поэтому я проверяю, является ли "что-то" действительно допустимым "материалом" в моем ограничении маршрута. Тогда в моем контроллере;

Public class SomeController
{
    public GetStuff(string stuffName)
    {
        //get stuff by its name and get its Id
        //use that Id to do something else
    }
}

Теперь, что я могу сделать, это

 public class AnalysisTypePathRouteConstraint : IRouteConstraint
{
    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
    {
       //check if "something" is really something
       values.Add("stuffId",stuff.Id");
    }
}

и получить этот идентификатор, который я добавил в качестве параметра в моем действии контроллера

    public GetStuff(int stuffId)
    {
        //get stuff by its name and get its Id
        //use that Id to do something else
    }

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

В чем мой вопрос, это хорошая практика? Поскольку мой URL-адрес не содержит sutffId, действие моего контроллера может сбить с толку будущих разработчиков, изучающих этот код.

Я был бы очень признателен за понимание этого вопроса.

Спасибо.

0 ответов

Другие вопросы по тегам