【发布时间】:2020-08-21 17:06:20
【问题描述】:
我有一个选项卡式 Razor 页面,加载时没有要从服务器检索的数据,为第一个选项卡设置了活动选项卡。但是,当我更新一个选项卡上的数据并将其发布时,我希望页面仅获取该选项卡的数据。到目前为止我所拥有的是
<ul class="nav nav-tabs" id="PTWTab" role="tablist">
<li class="nav-item">
<a class="nav-link active" id="PTW-tab" data-toggle="tab" href="#PTW" aria-controls="ptw" aria-selected="true" style="width:200px">Permit To Work</a>
</li>
<li class="nav-item">
<a class="nav-link" id="HazId-tab" data-toggle="tab" href="#HazId" aria-controls="hazid" aria-selected="false" style="width:200px">Hazard Identification</a>
</li>
<li class="nav-item">
<a class="nav-link" id="GasTest-tab" data-toggle="tab" href="#GasTest" aria-controls="gt" aria-selected="false" style="width:200px">Gas Testing</a>
</li>
<li class="nav-item">
<a class="nav-link" id="IsoCert-tab" data-toggle="tab" href="#IsoCert" aria-controls="isocert" aria-selected="false" style="width:200px">Isolation Certificate</a>
</li>
</ul>
而cshtml是:
public async Task<IActionResult> OnPostIsoCertAsync(int? PTWNo)
{
if (!ModelState.IsValid)
{
return Page();
}
var newIsoCert = await _context.ICContents.FindAsync(PTWNo);
if (newIsoCert == null)
{
return NotFound();
}
if (await TryUpdateModelAsync<ICContent>(
newIsoCert,
"ICContent",
c => c.IdICD,
c => c.IsoStep,
c => c.EquipmentID,
c => c.EquipmentDescription,
c => c.EnSource,
c => c.IsType,
c => c.IsMethod,
c => c.LockNo,
c => c.PreparedBy,
c => c.ImplementedBy,
c => c.VerifiedBy,
c => c.IsStatus))
{
await _context.SaveChangesAsync();
return Page();
}
return Page();
}
还有一个 OnGet 过程和 html 来显示数据
【问题讨论】:
-
我的 OnGet 代码是: public async Task
OnGetIsoCertAsync(int ptwNoId) ...这里的代码 return Page(); } -
如果您只想更改 html 的部分内容,在本例中为选项卡,您将不得不编写 JavaScript。您的操作方法应返回部分视图以便于工作。当您向 action 方法发送请求并返回结果时,JavaScript 可以将您要替换的页面的特定区域替换为返回的局部视图
-
我只是想避免使用 javascript,只更新与我有关的选项卡。在部分视图中,我尚未探索,但与 javascript 相关