浅谈Asp.net Mvc之Action如何传多个参数的方法

本文介绍了如何在ASP.NET MVC中配置路由以支持传递多个参数到控制器的方法。通过定义不同的路由模式,实现了传递两个参数及多个参数的需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近,工作上有一个需要:用户查询日志文件信息,查看某一个具体日志信息,可能同时查看该日志所在日期的其他日志信息列表。

为完成此功能,我打算在URL中传入了两个参数,一个记录此日志时间,另外一个记录日志的主键ID,因此,准备从Asp.net MVC的路由入手。

在Global.asax文件中,默认路由如下。

?
1
2
3
4
5
routes.MapRoute(
         "Default" , // 路由名称
         "{controller}/{action}/{id}" , // 带有参数的 URL
         new { controller = "Logon" , action = "Logon" , id = UrlParameter.Optional } // 参数默认值
       );

这个路由中,在Action后面只能传入一个参数,不能传入多个参数,因此,需要增加路由信息。

在Global文件中,新增了一个路由,路由名称为“Default1",代码如下

?
1
2
3
4
5
//第一种路由 传两个参数过去
routes.MapRoute( "Default1" ,
"{controller}/{action}/{Parma1}/{Parma2}" ,
new { controller = "" , action = "" },
new { });

上述路由,可以传入两个参数。

在此,我们建一个TestController,添加一个Test.cshtml页面,在TestController写下代码,如下

?
1
2
3
4
5
6
public ActionResult Test( string date, string id)
{
ViewData[ "date" ] = date;
ViewData[ "id" ] = id;
return View();
}

在Test.cshtml页面中写如下代码

?
1
2
要查询的日志时间为:@ViewData["date"]< br />
要查询的日志ID为:@ViewData["id"]< br />

运行编译器,然后在浏览器中输入 ”http://localhost:11507/Test/Test/2013-12-18/5“,页面显示如下

要查询的日志时间为:2013-12-18
要查询的日志ID为:5

现在又有一个问题来了,需要传入多个参数,怎么办呢?当然,只有新添加新的路由”Default2"。代码如下

?
1
2
3
4
5
6
//第二种路由 传多个参数,只是获得的第二个下划线后的所以数据
routes.MapRoute( "Default2" ,
"{controller}/{action}/{*id}" ,
new { controller = "" , action = "" }
 
);

运行编译器,然后在浏览器中输入 ”http://localhost:11507/Test/Test/2013-12-18/5/xianrongbin“,页面显示如下

要查询的日志时间为:
要查询的日志ID为:2013-12-18/5/xianrongbin

这里我们只能得到Action后面所有的参数,对此,我们可以解析出来,比如日志时间是 “2013-12-18",日志ID为”5“,日志操作者是”xianrongbin"。

http://www.pdfxs.com/search?q=KIBD-192

转载于:https://www.cnblogs.com/longdaye/p/8024575.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值