Я следил за превосходной серией Blazortrain от Карла Франклина, и после просмотра эпизодов 24 и 25 я попытался принять подход MVVM в моем текущем проекте.@page "/ViewTask/{Id}"
< /code>
До преобразования в MVVM мой код на просмотре был похож на < /p>
[Inject] protected NavigationManager NavigationManager { get; set; }
[Inject] protected IMyService MyService{ get; set; }
[Inject] protected IMyService2 MyService2{ get; set; }
[Inject] protected IMyService3 MyService3{ get; set; }
[Parameter] public string Id { get; set; }
< /code>
В моем новом ViewModel я ввожу службы в конструктор, как показано ниже, однако идентификатор параметра является нулевым. Есть ли простой способ передать параметры в класс ViewModel? Я думаю о том, чтобы сделать метод getWorkTask () общедоступным, принять параметр идентификатора и передать параметр таким образом, но хотел посмотреть, есть ли лучшие способы? < /P>
public class ViewTaskViewModel : IViewTaskViewModel
{
public ViewTaskViewModel(NavigationManager navigationManager,
IMyService myService,
IMyService2 myService2,
IMyService3 myService3)
{
NavigationManager = navigationManager;
MyService = myService;
MyService2 = myService;
MyService3 = myService3
InitializeViewModel().GetAwaiter().GetResult();
}
[Parameter] public string Id { get; set; }
private NavigationManager NavigationManager { get; set; }
private IMyService MyService { get; set; }
private IMyService2 MyService2 { get; set; }
private IMyService3 MyService3 { get; set; }
protected async Task InitializeViewModel()
{
...
GetWorkTask()
}
private void GetWorkTask()
{
int taskId = int.Parse(Id);
...
}
}
Подробнее здесь: https://stackoverflow.com/questions/647 ... view-model