C# Blazor导航到重新加载同一页面
我有一个维护任务网站,列出了机器的任务。机器详细信息页面:C# Blazor导航到重新加载同一页面,c#,asp.net,blazor,C#,Asp.net,Blazor,我有一个维护任务网站,列出了机器的任务。机器详细信息页面: @page "/MachineDetails/{MachineName}" @inherits MachineDetailsBase <h3>Machine Details for @Machine.MachineName</h3> <table class="table table-bordered table-striped table-hover"> <thead>
@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>
在任务页面上,我执行必要的工作,然后再次尝试调用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>
MachineDetails页面加载一秒钟,然后PerformTask页面重新打开
在MachineDetails页面的代码隐藏中放置断点,除了OnInitializedAsync()激发之外,我看不到任何东西。如何让MachinedDetails页面加载而不返回到PerformTask?我的答案基于这样一个假设,即此代码驻留在表单元素中
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>
div class=“行”>
拯救
不要存钱
我说得对吗
如果是,对该行为的解释非常简单:在不设置type属性的情况下使用input按钮相当于设置要提交的type属性。当您单击其中一个按钮时,除了NavigationManager的导航之外,还会发生传统的回发到服务器的操作。但你不会在SPA应用程序中发回帖子。这意味着离开应用程序的导航空间。。。要解决此问题,请将type属性添加到按钮值为的两个按钮:
这将不允许回发,导航将按预期进行
希望这能有所帮助……我的答案基于这样一个假设,即此代码驻留在表单元素中
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>
div class=“行”>
拯救
不要存钱
我说得对吗
如果是,对该行为的解释非常简单:在不设置type属性的情况下使用input按钮相当于设置要提交的type属性。当您单击其中一个按钮时,除了NavigationManager的导航之外,还会发生传统的回发到服务器的操作。但你不会在SPA应用程序中发回帖子。这意味着离开应用程序的导航空间。。。要解决此问题,请将type属性添加到按钮值为的两个按钮:
这将不允许回发,导航将按预期进行
希望这有帮助……请出示您的代码……哪些代码是相关的?除了NavigationManager之外,几乎所有的东西都只是对回购协议的调用。例如,MachineDetails的OnInitializedAsync()已获取SelectedMachine(),您的代码很好。它应该会起作用。但事实并非如此,它的典型行为是NavigationManager.NavigateTo。如果看不到上下文,则无法进一步说明。将编辑原始问题以尝试显示更多上下文。请显示您的代码…哪些代码相关?除了NavigationManager之外,几乎所有的东西都只是对回购协议的调用。例如,MachineDetails的OnInitializedAsync()已获取SelectedMachine(),您的代码很好。它应该会起作用。但事实并非如此,它的典型行为是NavigationManager.NavigateTo。如果看不到上下文,就没什么可说的了。我将编辑原始问题以显示更多上下文。是的,这是一种形式——我明天回去工作时会做第一件事。我想你已经明白了:)。谢谢你的帮助,真管用,谢谢。我是网络编程新手,我认为表单标签本质上只是相关控件的逻辑分组。是的,它是在表单中的——我明天回去工作时会做第一件事。我想你已经明白了:)。谢谢你的帮助,真管用,谢谢。我不熟悉web编程,认为表单标记本质上只是相关控件的逻辑分组。
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>