学习ASP.NET Core Blazor编程系列十三——路由(完)
创始人
2024-03-02 13:09:46
0

九、NavigationManager

        有的时候我们可能需要在代码里进行导航,如果是JavaScript我们会用window.location来切换页面,Blazor为我们提供了相应的封装:NavigationManager。使用NavigationManager可以通过代码直接进行页面间的跳转。我们在BookIndex页面放个按钮然后通过按钮的点击事件进行跳转,修改BookIndex页面的代码,注入NavigationManager对象,通过NavigationManager.NavigateTo方法进行跳转。

名称

类型

说明

BaseUri

属性

获取或设置当前的基 URI。BaseUri 始终表示为字符串形式的绝对 URI,以斜杠结尾。 通常,这与文档中 元素的 href 特性相对应。

Uri

属性

获取或设置当前 URI。 Uri 始终以字符串形式表示为绝对 URI。

NavigateTo

方法

导航到指定 URI。

ToAbsoluteUri

方法

将相对 URI 转换为绝对 URI。

ToBaseRelativePath

方法

给定基 URI (比如,前面的 BaseUri 的返回值),将绝对 URI 转换为相对于基 URI 前缀的 URI。

LocationChanged

事件

当导航位置变化时触发的事件。

       1. 在Visual Studio 2022的解决方案资源管理器中,找到 BookIndex.razor 组件,使用鼠标左键双击,在文本编辑器中打开,然后修改代码如下:

@page "/BookIndex"
@using BlazorAppDemo.Models
@using Microsoft.EntityFrameworkCore@inject IDbContextFactory dbFactory
@inject NavigationManager NavigationManager图书列表

图书列表

 @foreach (var item in books){ }
NameAuthorPriceReleaseDateStockQtyQty操作
@item.Name@item.Author@item.Price@item.ReleaseDate@item.StockQty@item.Qty编辑
@code {private static BookContext _context;private List books = new List();protected override async Task OnInitializedAsync(){_context = dbFactory.CreateDbContext();books=_context.Book.ToList();await base.OnInitializedAsync();}public void EditBook(int Id){NavigationManager.NavigateTo("/AddBook?Id="+Id.ToString());}}

      上面代码中,我们添加了Button按钮和EditBook方法,在EditBook方法 中我们通过NavigationManager.NavigateTo("/AddBook?Id="+Id.ToString());

      这一行代码是通过把Id参数放在URL的QueryString中,将图书的ID传递给AddBook页面。

    2.在我们写完上面的代码之后,Visual Studio 2022提示我们使用的Button的@onclick事件调用的方法 是错误的。如下图。

 

     3. 我们希望根据通过事件处理程序传递额外的参数的想法破灭了。幸好Blazor 还支持将 Lambda 表达式作为委托事件处理程序。我们在事件处定义一个小型内联函数,将我们需要传递的信息作为方法的参数与事件参数一起传递给事件处理程序。在下面的示例中,我们在点击鼠标按钮的时候,将图书ID和MouseEventArgs参数,一起传递给EditBook方法。依照下面的代码片段再次修改BookIndex.razor中的Button的点击事件的代码和EditBook方法的代码。代码如下:

public void EditBook(MouseEventArgs e ,int Id){NavigationManager.NavigateTo("/AddBook?Id="+Id.ToString());
}

     4. 对于AddBook.razor 文件中的代码,我们不需要进行任何修改,还是使用上一篇文章中的代码。

    5.在Visual Studio 2022的菜单栏上,找到“调试à开始调试”或是按F5键,Visual Studio 2022会生成BlazorAppDemo应用程序,并在浏览器中打开Home页面,我们我们使用鼠标左键点击左边菜单上的“图书列表”菜单项,浏览器会显示我们修改过的图书列表页面,浏览器中我们看到在“编辑”按钮的下方,多了一个“修改”按钮。如下图。

     6.在浏览器中,使用鼠标左键点击我们要修改的图书信息的“修改”按钮,浏览器会自动跳转到AddBook页面。我们在AddBook的OnParametersSet方法 中设置断点,我们看到QueryString是取到了,我们看通过QueryHelpers.ParseQuery方法将QueryString格式化成字典形式,通过键值ID,我们取到了我们想到的参数值。如下图。

    7.在Visual Studio 2022中按F5,让代码继续执行。回到浏览器中,页面已经自动跳转到AddBook页面,并将我们需要修改的图书信息显示出来。如下图。

相关内容

热门资讯

优秀青年志愿者个人事迹材料 优秀青年志愿者个人事迹材料范文(通用8篇)  在我们平凡的日常里,大家都写过事迹材料,肯定对各类事迹...
开展消防安全检查的简报 开展消防安全检查的简报(精选7篇)  在日常学习、工作抑或是生活中,人们运用到简报的场合不断增多,简...
2021党员思想汇报 2021党员思想汇报  一、思想汇报的主要内容  对党的性质、纲领和路线、方针、政策的认识;  学习...
党员民主评议个人评价 党员民主评议个人评价  一、自我评价的积极作用  自我评价是人的自我概念的重要内容之一。其前提是自我...
预备党员转正评语 预备党员转正评语  如何做好预备党员的转正工作  根据党章规定的精神.做好预备党员的转正工作要注意把...
请党放心强国有我主题征文10... 请党放心强国有我主题征文1000字  请党放心强国有我主题征文1000字(精选10篇)  踏上新征程...
在公司上班员工证明 在公司上班员工证明  一、工作证明的含义  工作证明是指我国公民在日常生产生活经营活动中的一种证明文...
网络主播的聊天技巧 网络主播的聊天技巧  在视频直播间里面好多网络主播都不敢开口讲话,怕说多,怕说错,其实学会说话聊天技...
最美孝心少年事迹材料简介 最美孝心少年事迹材料简介最美孝心少年事迹材料简介1  冯xx,男,汉族,现年13岁,20xx年xx月...
青年文明号事迹材料 青年文明号事迹材料范文(精选7篇)  在日常学习、工作和生活中,要用到事迹的地方还是很多的,事迹具有...
初中数学名师工作室个人研修工... 初中数学名师工作室个人研修工作小结  初中数学名师工作室个人研修工作小结  新世纪学校· 龙小枝  ...
幼儿园教育叙事故事 幼儿园教育叙事故事  幼儿园教育叙事故事(一)  让感谢成为习惯  我在幼儿园担任小班教师,第一个活...
怎样做好学生工作 怎样做好学生工作怎样做好学生工作作为学生干部,他被推举学校或系领导同意后任命,授予了一定的权力,但他...
农村经典母亲祭文 农村经典母亲祭文范文(通用6篇)  祭文,文体名。 祭祀或祭奠时表示哀悼或祷祝的文章。 体裁有韵文和...
建党百年句子 建党百年句子  一、中国共产党建党日  中国共产党于1921年7月23日成立后,在反动军阀政府的残暴...
学史增信心得体会 学史增信心得体会  一、什么是党史  中共党史是政党史,是专史,它研究建国后中国共产党作为执政党的历...
优秀团干部简要事迹材料 优秀团干部简要事迹材料  事迹材料是指党政军机关为了弘扬正气,表彰先进,推动工作,对本单位具有突出事...
建党一百周年绘画作品 建党一百周年绘画作品  一、建党一百周年关于党的历史简介  中国共产党创建于1921年,中国共产党破...
安全生产知识培训的内容 安全生产知识培训的内容  安全生产是安全与生产的统一,其宗旨是安全促进生产,生产必须安全。以下是小编...
贫困救助申请书 贫困救助申请书  在这个高速发展的时代,各种申请书频频出现,利用申请书我们可以表达自己的愿望和诉求。...