C# Razor页面:在导航OnGetAsync时向传递多个参数

C# Razor页面:在导航OnGetAsync时向传递多个参数,c#,asp.net-core,razor-pages,C#,Asp.net Core,Razor Pages,我从事Razor页面项目,该项目表示模型列表和记录: public class List { public int ID { get; set; } [StringLength(25, MinimumLength = 3, ErrorMessage = "Title should be in range between 3 and 25")] [Display(Name = "Title")] public string Caption { get; set;

我从事Razor页面项目,该项目表示模型
列表
记录

public class List
{
    public int ID { get; set; }

    [StringLength(25, MinimumLength = 3, ErrorMessage = "Title should be in range between 3 and 25")]
    [Display(Name = "Title")]

    public string Caption { get; set; }

    public string UserId { get; set; }
    public User User { get; set; }

    public ICollection<Record> Records { get; set; }
}

public class Record
{
    public int ID { get; set; }
    [StringLength(25, MinimumLength = 3, ErrorMessage = "Word should be in range between 3 and 25")]
    [Display(Name = "Title")]

    public string Word { get; set; }
    [StringLength(30, MinimumLength = 3, ErrorMessage = "Translation should be in range between 3 and 30")]
    public string Translation { get; set; }

    public int ListId { get; set; }
    public List List { get; set; }
}
记录/详细信息(我要导航的页面)中方法
OnGetAsync
的签名应如下所示:

  <a asp-page="./Details" asp-route-id="@item.ID,@item.ListId">Details</a>
 public async Task<IActionResult> OnGetAsync(int? id, int? listId) {...}
@page "/Lists/{id}/Records/Details/"
<a asp-page="./Details" asp-route-id="@item.ID" asp-route-listId="@item.ListId">Details</a>
但它不起作用

如果我这样定义
@page Records/Details.cshtml

  <a asp-page="./Details" asp-route-id="@item.ID,@item.ListId">Details</a>
 public async Task<IActionResult> OnGetAsync(int? id, int? listId) {...}
@page "/Lists/{id}/Records/Details/"
<a asp-page="./Details" asp-route-id="@item.ID" asp-route-listId="@item.ListId">Details</a>
方法

 public async Task<IActionResult> OnGetAsync(int? id, int? listId)
公共异步任务OnGetAsync(int?id,int?listId) 转到断点,但是,两个参数都为null,URL如下所示:

这一点您已经差不多做到了,但您需要拆分这些管线参数,并使用类似以下内容:

  <a asp-page="./Details" asp-route-id="@item.ID,@item.ListId">Details</a>
 public async Task<IActionResult> OnGetAsync(int? id, int? listId) {...}
@page "/Lists/{id}/Records/Details/"
<a asp-page="./Details" asp-route-id="@item.ID" asp-route-listId="@item.ListId">Details</a>

详细信息

您可以使用
asp-route-*
设置参数,其中*表示参数本身的名称,并用于每个单独的参数

如果需要指定多个管线值,可以使用锚定标记辅助对象上的
asp所有管线数据
属性:

@{   
    var routeValues = new Dictionary<string, string>
        {
           { "listId", item.ListId },
           { "id", item.ID }
        };
}

<a asp-page="./Details" asp-all-route-data="routeValues">Click</a>
@{
var routeValues=新字典
{
{“listId”,item.listId},
{“id”,item.id}
};
}
点击
这在本手册中有介绍。