但是我收到了这个错误:
InvalidOperationException:没有名为“Miner/MinerDetail”的页面与提供的值匹配。
我想重定向到此页面
miner/MinerDetail
,其模型是minerPartsView
想要使用它的模型重定向到此页面 miner/MinerDetail 是 minerPartsView
好吧,根据您共享的屏幕截图,由于两个主要原因,您似乎无法重定向到您的
MinerDetails page
。
首先,如果你的
Request.IsAjaxRequest()
执行了,那么你的下一个块将不会执行,你已经返回了语句。
其次,您没有以正确的方式重定向到
MinerDetails page
的原因。由于您尚未分享您的 MinerDetails page
详细设计,因此我正在分享如何使用新对象重定向到新的 razorpage
。
型号:
假设我们有以下模型,我们希望将其从初始页面传递到
MinerDetails page
。
public class MinerCustomModel
{
public string? PowerSerialNumber { get; set; }
public string? MinerSerialNumber { get; set; }
public string? WorkerName { get; set; }
}
注意: 在您的场景中,模型将是
minerPartsView
模型
初始索引/加载页面:
public class IndexModel : PageModel
{
private readonly ILogger<IndexModel> _logger;
public IndexModel(ILogger<IndexModel> logger)
{
_logger = logger;
}
public async Task<IActionResult> OnGet()
{
var myData = new MinerCustomModel()
{
MinerSerialNumber = "SM-001",
PowerSerialNumber = "PSN-002",
WorkerName = "Worker Name"
};
string data = System.Text.Json.JsonSerializer.Serialize(myData);
return RedirectToPage("Miner/MinerDetails", new { objectData = data });
}
}
矿工详情页面:
public class MinerDetailsModel : PageModel
{
[BindProperty]
public MinerCustomModel? minerCustomModel { get; set; } = new MinerCustomModel();
public void OnGet(string objectData)
{
var enitity = System.Text.Json.JsonSerializer.Deserialize<MinerCustomModel>(objectData);
minerCustomModel.PowerSerialNumber = enitity.PowerSerialNumber;
minerCustomModel.MinerSerialNumber = enitity.MinerSerialNumber;
minerCustomModel.WorkerName = enitity.WorkerName;
}
}
注意: 确保我们定义的
MinerCustomModel
应该是 class
而不是 pageModel
和 [BindProperty]
应该初始化为 new MinerCustomModel()
以避免空引用异常。
MinerDetails模型页面浏览:
@page
@model MinerDetailsModel
<h1>Miner Details</h1>
<table class="table">
<thead>
<tr>
<th>
PowerSerialNumber
</th>
<th>
MinerSerialNumber
</th>
<th>
WorkerName
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
@Model.minerCustomModel?.PowerSerialNumber
</td>
<td>
@Model.minerCustomModel?.MinerSerialNumber
</td>
<td>
@Model.minerCustomModel?.WorkerName
</td>
</tr>
</tbody>
</table>
注意: 在 MinerDetails 视图中,我们应该引用
@model MinerDetailsModel page model
,而不是 MinerCustomModel
或 IndexModel
。
输出: