重定向到 ASP.NET Core razor 页面中的页面时出错

问题描述 投票:0回答:1

我想重定向到此页面 root that I want to redirect to,

但是我收到了这个错误:

InvalidOperationException:没有名为“Miner/MinerDetail”的页面与提供的值匹配。

我想重定向到此页面

miner/MinerDetail
,其模型是
minerPartsView

asp.net-core razor-pages asp.net-core-6.0
1个回答
0
投票

想要使用它的模型重定向到此页面 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

输出:

© www.soinside.com 2019 - 2024. All rights reserved.