Mr.*_*r.B 2 c# asp.net-core razor-pages
我从事代表模型的 Razor Page 项目,Lists并且Records:
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; }
}
Run Code Online (Sandbox Code Playgroud)
我在打开 List Of Recordsfrom时构建了有效的 url Lists:

现在我想为一个Record看起来像这样的单曲构建类似的 URL :
然而,要做到这一点,我需要正确传递多个参数:ListId和RecordId通过csgtml的文件。像这样的东西:
<a asp-page="./Details" asp-route-id="@item.ID,@item.ListId">Details</a>
Run Code Online (Sandbox Code Playgroud)
OnGetAsyncRecords/Details(我要导航的页面)中的方法签名应如下所示:
public async Task<IActionResult> OnGetAsync(int? id, int? listId) {...}
Run Code Online (Sandbox Code Playgroud)
page in 的定义Records/Details.cshtml应该类似于:
@page "/Lists/{listId}/Records/{id}/Details/"
Run Code Online (Sandbox Code Playgroud)
但它不起作用!
如果我这样定义@page Records/Details.cshtml:
@page "/Lists/{id}/Records/Details/"
Run Code Online (Sandbox Code Playgroud)
方法
public async Task<IActionResult> OnGetAsync(int? id, int? listId)
Run Code Online (Sandbox Code Playgroud)
您差不多就完成了,但是您需要拆分这些路由参数并使用以下内容:
<a asp-page="./Details" asp-route-id="@item.ID" asp-route-listId="@item.ListId">Details</a>
Run Code Online (Sandbox Code Playgroud)
您用于asp-route-*设置参数,其中 * 表示参数本身的名称,用于每个单独的参数。
如果需要指定多个路由值,可以使用asp-all-route-data锚标记帮助器上的属性:
@{
var routeValues = new Dictionary<string, string>
{
{ "listId", item.ListId },
{ "id", item.ID }
};
}
<a asp-page="./Details" asp-all-route-data="routeValues">Click</a>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6830 次 |
| 最近记录: |