Как внедрить MVVM Light INavigationService в проекте DotVVM - PullRequest
0 голосов
/ 15 ноября 2018

Я хочу реализовать интерфейс MVVM Light INavigationService в проекте DotVVM ; но я не знаю как это сделать. Самый важный метод, который мне нужно реализовать - это метод NavigateTo(string pageKey).

Я использую SpaContentPlaceHolder в моем MasterPage, и я хочу изменить содержимое (RouteName) SpaContentPlaceHolder, вызвав метод NavigateTo.

1 Ответ

0 голосов
/ 18 ноября 2018

Если вы находитесь в модели просмотра, вы можете просто позвонить Context.RedirectToRoute("YourRoute", new { Param1 = something }).

Если вы хотите перенаправить из другого места, самый простой способ - создать интерфейс INavigationService и реализовать его для вызова метода на IDotvvmRequestContext (который уже зарегистрирован в внедрении зависимостей ASP.NET Core).контейнер):

public interface INavigationService 
{
    void NavigateTo(string routeName, object routeParameters);
}

public class DotvvmNavigationService 
{
    private IDotvvmRequestContext context;

    public DotvvmNavigationService(IDotvvmRequestContext context) {
        this.context = context;
    }

    public void NavigateTo(string routeName, object routeParameters) {
        this.context.RedirectToRoute(routeName, routeParameters);
    }
}

Затем вы можете просто зарегистрировать реализацию как область действия зависимость в Startup.cs, и вы сможете получить ее в любом месте.

services.AddScoped<DotvvmNavigationService>();
...