如何在 DotVVM 项目中实现 MVVM Light INavigationService
How to implement MVVM Light INavigationService in a DotVVM project
我想实现 MVVM Light INavigationService
interface in a DotVVM 项目;但我不知道该怎么做。我需要实现的最重要的方法是 NavigateTo(string pageKey)
方法。
我正在使用 SpaContentPlaceHolder
in my MasterPage
,我想通过调用 NavigateTo
方法来更改 SpaContentPlaceHolder
的内容(RouteName)。
如果你在视图模型中,你可以直接调用Context.RedirectToRoute("YourRoute", new { Param1 = something })
。
如果你想从不同的地方重定向,最简单的方法是创建 INavigationService
接口并实现它以调用 IDotvvmRequestContext
上的方法(已经在 ASP.NET 核心依赖注入容器):
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
中将实现注册为 scoped 依赖项,您应该可以在任何需要的地方获得它。
services.AddScoped<DotvvmNavigationService>();
我想实现 MVVM Light INavigationService
interface in a DotVVM 项目;但我不知道该怎么做。我需要实现的最重要的方法是 NavigateTo(string pageKey)
方法。
我正在使用 SpaContentPlaceHolder
in my MasterPage
,我想通过调用 NavigateTo
方法来更改 SpaContentPlaceHolder
的内容(RouteName)。
如果你在视图模型中,你可以直接调用Context.RedirectToRoute("YourRoute", new { Param1 = something })
。
如果你想从不同的地方重定向,最简单的方法是创建 INavigationService
接口并实现它以调用 IDotvvmRequestContext
上的方法(已经在 ASP.NET 核心依赖注入容器):
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
中将实现注册为 scoped 依赖项,您应该可以在任何需要的地方获得它。
services.AddScoped<DotvvmNavigationService>();