Csharp/C#教程:带有一个必需参数和一个可选参数的ASP.NET MVC路由?分享


带有一个必需参数和一个可选参数的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() } 

www.ctvol.com true Article Csharp/C#教程:带有一个必需参数和一个可选参数的ASP.NET MVC路由?分享

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1023347.html

(0)
上一篇 2022年1月7日 下午11:19
下一篇 2022年1月7日 下午11:20

精彩推荐