📅  最后修改于: 2023-12-03 15:29:29.333000             🧑  作者: Mango
ASP.NET MVC 是一个基于 MVC 模式的 Web 应用程序框架,Url.Action() 是其中一个重要的方法,用于生成 URL。在 ASP.NET MVC 的视图中常常需要跳转到其他的页面,而且还需要带上参数。在这个场景下,Url.Action() 就是我们最常用的方法之一了。
Url.Action() 方法可以通过生成一个指定控制器下的指定动作(Action)的 URL,来实现跳转到其他页面。它的基本用法非常简单:
@Url.Action("ActionName", "ControllerName")
举个例子,假设我们有一个控制器叫 HomeController,里面有一个 Index() 方法,我们可以使用下面的代码来生成它的 URL:
@Url.Action("Index", "Home")
这个方法并不是太有用,因为我们并没有传递任何参数进去。如果需要传递参数,我们可以使用路由参数或查询字符串参数。
我们可以使用路由参数来传递参数。路由参数是指 URL 中的一部分,包含在花括号 {} 中。我们在定义路由时指定路由参数的名称和类型,然后在 Url.Action() 方法中将参数作为一个对象传递进去。下面是一个例子:
// 在 RouteConfig.cs 中注册路由规则
routes.MapRoute(
name: "MyRoute",
url: "{controller}/{action}/{id}/{title}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, title = UrlParameter.Optional }
);
// 在视图中生成 URL,传递路由参数
@Url.Action("Details", "Home", new { id = 123, title = "my-title" })
在上面的代码中,我们先注册了一个名为 MyRoute 的路由规则,同时指定了它包括四个参数:controller、action、id 和 title。然后,在视图中生成了一个 URL,调用 Home 控制器中的 Details 方法,传递了 id 和 title 两个参数进去。生成的 URL 是类似这样的:/Home/Details/123/my-title。
另一种传递参数的方式是使用查询字符串。查询字符串是 URL 中的一个问号 ? 后面的部分,键值对之间用 & 符号隔开。在 Url.Action() 方法中,我们可以直接将需要传递的参数作为一个匿名对象传递进去,Url.Action() 方法会自动将它们转换成查询字符串参数。下面是一个例子:
// 在视图中生成 URL,通过查询字符串传递参数
@Url.Action("Details", "Home", new { id = 123, title = "my-title" }
在上面的代码中,我们同样调用了 Home 控制器中的 Details 方法,传递了 id 和 title 两个参数进去。生成的 URL 是类似这样的:/Home/Details?id=123&title=my-title。
Url.Action() 方法是 ASP.NET MVC 中一个非常重要的方法,用于生成 URL。在视图文件中,经常需要跳转到其他的页面,同时需要传递一些参数进去。通过使用路由参数或查询字符串参数,我们可以很容易地实现这个功能。