Asp.net mvc 添加新路由时,RedirectToAction停止工作
我在路由集合中添加了以下路由,然后调用returnAsp.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 = @"^[
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值为公司/索引
的获取
操作。您需要将此路由移动到路由配置的底部,以便只有当其他所有内容都失败时,它才会匹配。