【发布时间】:2021-11-28 04:06:29
【问题描述】:
我有一个带有一个视图的 Blazor 页面,但我想为此使用两个 ViewModel,这取决于我使用的 URL。
@page "/canSimStatic"
@page "/CanSimDynamic"
@using System.Diagnostics;
@using edge_cantraficSimulator.Data
@using edge_cantraficSimulator.ViewModels
@using System.Threading;
@using System.IO;
@using Microsoft.AspNetCore.Mvc.Rendering;
@inject NavigationManager NavigationManager
@if (NavigationManager.Uri.Contains("canSimStatic"))
{
@inject ViewModels.CanSimStaicViewModell viewmodel
}
@if (NavigationManager.Uri.Contains("CanSimDynamic"))
{
@inject ViewModels.CanSimDynamicViewModdels viewmodel
}
我的问题是,无论我使用这两个网址中的哪一个,它总是选择第二个作为viewmodel
【问题讨论】:
-
首先为什么要注入不需要的视图模型。其次,创建一个其中包含 2 的 Viewmodel 并使用您想要的。
-
如果我不注入它,我将无法在我的剃须刀页面中使用 i
-
<h1>@viewmodell.SiteTitle</h1> -
您的模型实际上应该在 Get() 方法中初始化,并且应该只是该类的属性。
-
不要试图在一个“页面”中满足两种不同的场景,只需有两个页面 - 每个页面都注入正确的模型并适当地处理它 - 任何真正共享的代码/标记都可以提取给孩子组件并以这种方式重复使用
标签: c# asp.net .net asp.net-core blazor