Mat*_*rla 23

您收到的错误告诉ASP.NET MVC找到了两个具有相同名称的操作,但无法选择使用哪个操作.

如果您有两个索引操作DinnersController.cs:

public ActionResult Index() {
Run Code Online (Sandbox Code Playgroud)

和:

public ActionResult Index(int? page) {
Run Code Online (Sandbox Code Playgroud)

然后你应该删除第一个Action.因为第二个是第一个的"更新"版本.第二个Action接受以下请求:

/晚餐

/晚餐?页= 2

/晚餐/索引

/晚餐/指数?页= 2

随着RegisterRoutes的变化,它还接受以下请求:

/晚餐/页/ 2

您可以使用两个具有相同名称的操作,一个用于保存(回发),您可以使用[AcceptVerbs(HttpVerbs.Post)]或仅修改保存操作[HttpPost]


cou*_*ben 21

MVC不支持在控制器中重载动作方法.在同一控制器上不可能有两个具有不同方法签名的Index()操作.

为了使您正在测试工作的示例,您必须删除不接受任何参数的Index()操作,并将其替换为将nullable int作为参数的操作.

  • 如果MVC支持重载动作会很好.我希望能够在我的操作的多个版本之间切换,假设有一个[PriorityAttribute(10)],以便首先采取此操作.然后我可以从数据库配置中或根据需要更改该数字. (5认同)