【发布时间】:2020-05-27 20:24:52
【问题描述】:
我有列出机器任务的维护任务网站。 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 上的相关代码做相同的基本事情代码返回:
剃须刀页面代码:
<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 页面后面的代码中放置断点,除了 OnInitializedAsync() 之外,我什么也没看到。如何让 MachineDetails 页面加载而不返回到 PerformTask?
【问题讨论】:
-
请出示您的代码...
-
什么代码是相关的?除了 NavigationManager 之外,几乎所有东西都只是对 repo 的调用。例如 MachineDetails 的 OnInitializedAsync() 有 GetSelectedMachine()
-
你的代码没问题。它应该工作。但它没有,并且具有 NavigationManager.NavigateTo 的典型行为。没有看上下文,就无话可说了。
-
将编辑原始问题以尝试显示更多上下文。