У меня есть веб-сайт задач по обслуживанию, на котором перечислены задачи для машины. страница MachineDetails:
@page "/MachineDetails/{MachineName}"
@inherits MachineDetailsBase
<h3>Machine Details for @Machine.MachineName</h3>
<table class="table table-bordered table-striped table-hover">
<thead>
<tr>
<th scope="col">Description</th>
<th scope="col">Repeat<br />(Days)</th>
<th scope="col">Exp Dur<br /> (Min)</th>
<th scope="col">Next Due</th>
<th scope="col">Owner</th>
<th scope="col">Perform<br />Task</th>
</tr>
</thead>
@foreach (var t in Machine.TasksForMachine)
{
<tr scope="row">
<td>@t.TaskDescription</td>
<td>@t.TaskRepeatDays</td>
<td>@t.TaskMinutes</td>
<td>@t.NextDue.Value.ToShortDateString()</td>
<td>@t.TaskOwnerType</td>
<td style="text-align:center"><button class="btn btn-primary" @onclick="(() => ShowPerformTask(t.TaskId))"> <img src="/css/open-iconic/svg/check.svg" height="12" /></button></td>
</tr>
}
</table>
MachineDetailsBase:
public class MachineDetailsBase : ComponentBase
{
[Inject]
public IMaintenancePMRepository repo { get; set; }
[Inject]
NavigationManager NavigationManager { get; set; }
[Parameter]
public string MachineName { get; set; }
public MachineForTasks Machine {get;set;}
// other details
protected override async Task OnInitializedAsync()
{
GetSelectedMachine(MachineName);
EmployeeList = repo.GetEmployeeList().ToList();
StatusLoookup = repo.GetStatusList().ToList();
}
private void GetSelectedMachine(string inputName)
{
Machine= repo.GetAllEquipment().Where(m => m.EquipmentName == inputName).FirstOrDefault(); ;
}
public void ShowPerformTask(int taskID)
{
NavigationManager.NavigateTo("/PerformTask/" + taskID.ToString());
}
на странице задачи Я выполняю необходимую работу, а затем снова пытаюсь вызвать NavigationManager, чтобы вернуться к исходной странице .
Соответствующий код на PerformTaskBase выполняет тот же базовый c код вещи для возврата:
код страницы бритвы:
<div class="row">
<div class="col-sm-4 ">
<button class="btn btn-primary" @onclick="(() => ClosePerformTask(true))"> Save </button>
</div>
<div class="col-sm-4 ">
<button class="btn btn-secondary" @onclick="(() => ClosePerformTask())"> Don't Save</button>
</div>
</div>
затем код:
public void ClosePerformTask(bool SaveTask = false)
{
if (SaveTask)
{
repo.PerformTask(TaskRecord);
TaskToPerform.NextDue = DateTime.Today.AddDays(TaskToPerform.TaskRepeatDays.GetValueOrDefault());
repo.UpdateTask(TaskToPerform);
}
NavigationManager.NavigateTo("/MachineDetails/" + MachineID);
}
страница MachineDetails загружается на долю секунды, затем открывается страница PerformTask.
Помещая точки останова в коде за страницей MachineDetails, я вообще не вижу ничего, кроме OnInitializedAsyn c (). Как я могу заставить страницу MachineDetails загружаться и не возвращаться к PerformTask?