Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 添加新路由时,RedirectToAction停止工作_Asp.net Mvc_Asp.net Mvc Routing - Fatal编程技术网

Asp.net mvc 添加新路由时,RedirectToAction停止工作

Asp.net mvc 添加新路由时,RedirectToAction停止工作,asp.net-mvc,asp.net-mvc-routing,Asp.net Mvc,Asp.net Mvc Routing,我在路由集合中添加了以下路由,然后调用returnredirectoaction(“Index”,“Company”)停止工作 routes.MapRoute( name: "CompanyRoute", url: "{id}", defaults: new { controller = "Company", action = "Get" }, constraints: new { id = @"^[

我在路由集合中添加了以下路由,然后调用return
redirectoaction(“Index”,“Company”)停止工作

routes.MapRoute(
            name: "CompanyRoute",
            url: "{id}",
            defaults: new { controller = "Company", action = "Get" },
            constraints: new { id = @"^[a-z]+$" }

        );
出现了这个错误

Error message: The model item passed into the dictionary is of type 
'System.Collections.Generic.List`1[Project.Models.Company]', but 
this dictionary requires a model item of type 'Project.Models.Company'.

有人知道这个错误是关于什么的吗?

这与您的路线无关。这是一个Razor错误,它意味着您向视图传递的类型与该视图声明的模型不匹配。在这种情况下,您传递的是一个
列表
,而不仅仅是
公司
。检查呈现此视图的操作,并确保传递到
视图()
调用的模型是单个
公司
实例。

当我删除路由时,对RedirectToAction的调用工作正常,因此它必须是路由。可能另一个操作正在使用给定的路由进行响应。不过,这有点离题了。我告诉你错误的意思。找出为什么您的视图被传递给
列表而不是
公司
,错误就会消失。是的,路由(CompanyRoute)捕获了呼叫,但您能解释一下原因吗?因为如果我在地址字段中写入公司/索引,那么默认路由会处理它。出于某种原因,呼叫重定向到操作(“索引”、“公司”);不会转换为公司/索引,因此路由将重定向到id设置为null的公司/获取。这可能是什么原因造成的?
{id}
不一定意味着它必须是一个int。这样定义路由本质上使它成为一个包罗万象的路由,在这里,指向像
公司/索引
这样的URL,点击id值为
公司/索引
获取
操作。您需要将此路由移动到路由配置的底部,以便只有当其他所有内容都失败时,它才会匹配。