gpt4 book ai didi

asp.net-mvc - MVC5 中的默认 Controller 和默认操作

转载 作者:行者123 更新时间:2023-12-02 02:41:08 25 4
gpt4 key购买 nike

我有一个用 MVC 5 开发的网站,我使用路由属性进行路由。我使用以下代码为每个 Controller 设置了默认 Controller 默认操作

 public class CompanyController : MainController
{
[Route("~/", Name = "default")]
[Route("Company/Index")]
public ActionResult Index(string filter = null)
{
//My code here
}

[Route("Company/Edit")]
public ActionResult Edit(int id)
{
//My code here
}
}

我有另一个具有默认操作的 Controller :

[RoutePrefix("Analyst")]
[Route("{action=Index}")]
public class AnalystController : MainController
{
[Route("Analyst/Index")]
public ActionResult Index(string filter = null)
{
//My code here
}

[Route("Analyst/Edit")]
public ActionResult Edit(int id)
{
//My code here
}
}

默认 Controller 工作完美,但是当我导航到分析 Controller 而不指定操作名称时,出现以下错误:

Multiple controller types were found that match the URL. This can happen if attribute routes on multiple controllers match the requested URL.

The request has found the following matching controller types:
SurveyWebsite.Controllers.AnalystController
SurveyWebsite.Controllers.CompanyController

如何正确导航到 http://localhost:61534/analyst并达到默认操作(索引)?该操作还应该可以通过 http://localhost:61534/analyst/Index 访问。感谢您的帮助。

最佳答案

提供一个空字符串作为索引操作的路由值,以便它适用于 Analyst,这是您的 Controller 路由前缀。您可以使用第二个 Route 属性进行装饰,使其与“Analyst/Index”网址一起使用,您可以在其中将“Index”传递给它。

[RoutePrefix("Analyst")]
public class AnalystController : MainController
{
[Route("")]
[Route("Index")]
public ActionResult Index(string filter = null)
{
//My code here
}

[Route("Edit/{id}")]
public ActionResult Edit(int id)
{
//My code here
}
}

这适用于 /Analyst/Analyst/Index

关于asp.net-mvc - MVC5 中的默认 Controller 和默认操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34515483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com