Применение Google AMP к приложению MVC Core (альтернатива режимам отображения для MVC Core) - PullRequest
0 голосов
/ 11 марта 2019

У меня есть приложение, которое использует мобильные представления и представления рабочего стола в качестве разных HTML-страниц. Теперь я перемещаю это в ASP.NET Core. Я пытаюсь создать страницу AMP с помощью ASP.NET Core MVC.

Код:

public class AmpViewLocationExpander : IViewLocationExpander {
    private const string ValueKey = "ampmode";
    public void PopulateValues(ViewLocationExpanderContext context) {
        // magic utility method that determines whether this is within an AMP context
        var isAmp = context.ActionContext.HttpContext.IsAmp();
        // persist the value on the context to allow the cache to consider this
        context.Values[ValueKey] = isAmp.ToString();
    }

    public IEnumerable<string> ExpandViewLocations(ViewLocationExpanderContext context,
    IEnumerable<string> viewLocations) {
        // when in AMP mode
        if (context.Values.TryGetValue(ValueKey, out var isAmpValue) && isAmpValue == "True") {
            return ExpandAmpViewLocations(viewLocations);
        }
        // otherwise fall back to default locations
        return viewLocations;
    }

    private IEnumerable<string> ExpandAmpViewLocations(IEnumerable<string> viewLocations) {
        foreach (var location in viewLocations) {
            // yield the AMP version first
            yield return location.Replace("{0}", "{0}.amp");
            // then yield the normal version as a fallback
            yield return location;
        }
    }
}

Я искал это и реализовал, как показано в этой ссылке: Примените AMP, используя MVC Core , но он показывает эту ошибку:

«HttpContext» не содержит определения «IsAmp» и не удалось найти доступный метод расширения IsAmp, принимающий первый аргумент типа «HttpContext» (отсутствует директива using или ссылка на сборку?)

...