加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – MVC路由错误:约束条目’长度’

发布时间:2020-12-16 04:18:30 所属栏目:asp.Net 来源:网络整理
导读:我有一个名为Account的控制器,其操作具有以下签名: public ActionResult Verify(string userName,Guid authorisationToken); 我创建了一个链接来调用此操作: /Account/Verify/sachin13/409bdaaa-0b65-4bb8-8695-6e430323d8f8 当我转到此链接时,我收到以下
我有一个名为Account的控制器,其操作具有以下签名:
public ActionResult Verify(string userName,Guid authorisationToken);

我创建了一个链接来调用此操作:

/Account/Verify/sachin13/409bdaaa-0b65-4bb8-8695-6e430323d8f8

当我转到此链接时,我收到以下错误:

The constraint entry 'Length' on the route with URL 'Account/{Verify}/{userName}/{authorisationToken}' must have a string value or be of a type which implements IRouteConstraint.

这是我的RegisterRoutes方法在Global.asax中的样子:

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                "Default",// Route name
                "{controller}/{action}/{id}",// URL with parameters
                new { controller = "Home",action = "Index",id = UrlParameter.Optional },// Parameter defaults
                new[] { "UI.Controllers" }
            );

            routes.MapRoute(
                "AccountVerify","Account/{Verify}/{userName}/{authorisationToken}",new { controller = "Account",action = "Verify",userName = "",authorisationToken = "" },"UI.Controllers"
            );
        }

两个问题:

>我做了一些与众不同的事情,还是我的方法符合标准做法?
>这是什么问题?

谢谢,

萨钦

解决方法

你应该改变

“UI.Controllers”

new [] {“UI.Controllers”}

在你的第二条路线.

如果你只指定一个字符串(不是一个数组),那么你得到错误的MapRoute函数重载 – 而不是MapRoute(RouteCollection,String,Object,String []),它接受一个命名空间列表作为你得到的最后一个参数MapRoute(RouteCollection,Object),它将约束作为最后一个参数.字符串“UI.Controllers”不是正确的约束规范=>你得到错误.

另外,@ Pankaj建议您的自定义路由应该在默认值之前,并且验证应该没有“{}”.

完整代码:

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "AccountVerify","Account/Verify/{userName}/{authorisationToken}",new [] { "UI.Controllers" }
        );

        routes.MapRoute(
            "Default",// Route name
            "{controller}/{action}/{id}",// URL with parameters
            new { controller = "Home",// Parameter defaults
            new[] { "UI.Controllers" }
        );
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读