Как предотвратить URL. RouteUrl (…) от наследовавшегося маршрута оценивает от текущего запроса

Необходимо прочитать Получить вашу базу данных под управлением версиями . Проверьте серию сообщений К. Скотта Аллена.

Когда дело доходит до контроля версий, база данных часто является гражданином второго или даже третьего сорта. Из того, что я видел, команды, которые никогда бы не подумали о написании кода без контроля версий через миллион лет - и это справедливо - могут каким-то образом совершенно не обращать внимания на необходимость контроля версий критически важных баз данных, на которые полагаются их приложения. Я не знаю, как вы можете называть себя инженером-программистом и вести себя открыто, когда ваша база данных находится не на том же строгом уровне контроля исходного кода, что и остальная часть вашего кода. Не позволяй этому случиться с тобой. Получите вашу базу данных под контролем версий.

31
задан Simon_Weaver 1 May 2015 в 23:17
поделиться

1 ответ

Мое решение было следующее:

Вспомогательный метод HtmlExtension:

    public static string RouteUrl(this UrlHelper urlHelper, string routeName, object routeValues, bool inheritRouteParams)
    {
        if (inheritRouteParams)
        {
            // call standard method
            return urlHelper.RouteUrl(routeName, routeValues);
        }
        else
        {
            // replace urlhelper with a new one that has no inherited route data
            urlHelper = new UrlHelper(new RequestContext(urlHelper.RequestContext.HttpContext, new RouteData()));
            return urlHelper.RouteUrl(routeName, routeValues);
        }
    }

Теперь я могу сделать:

Url.RouteUrl('testimonials-route', new { }, false)

и точно знаю, что он всегда будет вести себя одинаково, независимо от контекста .

Это работает так: взять существующий UrlHelper и создать новый с пустым «RouteData». Это означает, что наследовать не от чего (даже от нулевого значения).

26
ответ дан 27 November 2019 в 22:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: