生成输出 URL(16.2)
Posted 成为自己最想成为的那种人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生成输出 URL(16.2)相关的知识,希望对你有一定的参考价值。
1、在视图中生成输出 URL
几乎在每一个 MVC 框架应用程序中,你都会希望让用户能够从一个视图导航到另一个视图 —— 通常的做法是在第一个视图中生成一个指向第二个视图的链接,该链接以第二个视图的动作方法为目标。
手工定义 URL 快而简单,但也有很大风险——在每一次修改应用程序的 URL 方案时,都可能打断所有这种编码的 URL。—— 一个更好的替代方法是使用路由系统来生成输出 URL,这能够确保 URL 方案动态地生成 URL,这种方式确保了应用程序的 URL 方案能够得到反映。
16.2.1 用路由系统生成输出 URL
在一个视图中生成输出 URL 最简单的办法是,在视图中调用 html.ActionLink 辅助器方法。( @Html.ActionLink("链接文本", "目标动作方法的名称") )
传给 ActionLink 方法的参数是“链接文本”和“该连接的目标动作方法的名称”。(还有其他重载方式)
(ActionLink 方法生成的 HTML 是基于当前路由配置的,这种方法能够自动对路由配置的更改进行响应)
以这种方式生成链接(利用路由系统生成输出 URL)可以解决维护问题。—— 我们可以修改路由方案,而在视图中的输出链接会自动地反映处这种修改。(而且,当点击链接时,输出 URL 就自然地生成一个规则的输入请求)
16.2.2 以其他控制器为目标
ActionLink 方法的默认版本假设,输出 URL 的目标动作方法与链接所在视图对应的动作方法属于同一个控制器。
为了创建一个以不同控制器为目标的输出 URL,可以使用一个重载版本,它允许你指定控制器名称。
@Html.ActionLink("链接文本", "动作方法", "控制器")
(在生成输出 URL 时,路由系统不会对动作方法和控制器的值进行检验,因此你必须小心,不要指定不存在的目标)
路由系统相当聪明,它知道应用程序中定义的路由会使用默认的 Index 动作方法,所以在渲染视图时,生成的 HTML 中允许省略不必要的片段。(如 Index 动作方法)
在决定如何以给定给定动作方法为目标时,路由系统包含使用 Route 属性已经定义的路由。即:
如果控制器中 Index 动作方法如下所示:
[ Route("~/Test") ]
public ActionResult Index() {……}
以上是关于生成输出 URL(16.2)的主要内容,如果未能解决你的问题,请参考以下文章
根据指定路由生成URL |Generating a URL from a Specific Route | 在视图中生成输出URL|高级路由特性
生成链接中的全限定URL(Generating Fully Qualified URLs in Links) | 在视图中生成输出URL | 高级路由特性
生成URL(而不是链接) Generating URLs (and Not Links) | 在视图中生成输出URL |高级路由特性 | 精通ASP-NET-MVC-5-弗瑞曼