带有一个必需参数和一个可选参数的ASP.NET MVC路由?
在过去一个月左右的时间里,我一直在研究一个大型MVC应用程序,但这是我第一次需要定义一个自定义路由处理程序,而且我遇到了一些问题。 基本上我有两个参数要通过。 第一个是必需的,第二个是可选的。
我在这里听到这个答案。
这是我的自定义路线:
routes.MapRoute( "MyRoute", "{controller}/{action}/{param1}/{param2}", new { controller = "MyController", action = "MyAction", param1 = "", param2 = "" // I have also tried "UrlParameter.Optional" here. } );
我的动作方法签名:
public ActionResult MyAction(string param1, string param2)
如果我尝试URL https://[myserver]/MyController/MyAction/Test1/Test2
那么它就像我期望的那样工作,param1 =“Test1”和param2 =“Test2”
如果我尝试URL https://[myserver]/MyController/MyAction/Test1
那么两个参数都为null。
希望有人可以告诉我这里我做错了什么,因为我迷路了。
我假设您创建了新路线并保留了与您非常相似的默认路线。 您应该知道遍历路由集合以找到第一个匹配的路由。 所以如果你离开了默认的:
routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults );
在您的路线上方,它将匹配请求到https://[myserver]/My/MyAction/Test1
并调用MyController.MyAction
并将“Text1”设置为名为id
参数。 哪个会失败,因为此操作未声明一个名为id
。
您需要做的是在路线列表中首先移动您的路线,并使其更具体,然后现在:
routes.MapRoute( "Route", "My/{action}/{param1}/{param2}", new { controller = "My", action = "MyAction", param1 = "", param2 = "" });
这将强制通过My
路由的所有流量匹配此路由。
嗨,你这样创造你的溃败,我认为这将扼杀你
routes.MapRoute( "Regis", // Route nameRegister "Artical/{id}", // URL with parameters new { controller = "Artical", action = "Show", id = UrlParameter.Optional } // Parameter defaults );
试试这个
routes.MapRoute("MyRoute", "myRoute/{param1 }/{param2 }", new { controller = "MyController", action = "MyAction", param2 = UrlParameter.Optional }, new { param2 = @"w+" });
您可以使用“ UrlParameter.Optional ”将一个参数指定为可选,并使用DataType指定第二个参数表示如果传递整数值,则表示DataType(@“ d +”)和字符串i。
注意: 参数序列非常重要可选参数必须最后传递并在Gloab.asax中的默认路由之前注册新路由 。
然后你的动作链接就像
Test
或者有一个参数
Test
在你的控制器
上述就是C#学习教程:带有一个必需参数和一个可选参数的ASP.NET MVC路由?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
public ActionResult MyAction(string param2,string param1) { return View() }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1023347.html