当前对控制器类型{x}的操作{x}的请求是不明确的

本文关键字:请求 不明确 操作 控制器 类型 | 更新日期: 2023-09-27 18:13:17

这是完整的错误:

The current request for action 'Index' on controller type 'ClientController' is ambiguous between the following action methods:
System.Web.Mvc.ActionResult Index(System.String) on type MVCTest.Controllers.ClientController
System.Web.Mvc.ActionResult Index() on type MVCTest.Controllers.ClientController

非常非常新的MVC,我不断得到这个错误,而试图应用一个搜索栏的数据表。

控制器:

    public ActionResult Index(string SearchString)
    {
        var Client = from c in db.Clients
                     select c;
        if (!String.IsNullOrEmpty(SearchString))
        {
            Client = Client.Where(s => s.Name.Contains(SearchString));
        }
        return View(Client);
    }
HTML:

<p>
@Html.ActionLink("Create New", "Create")
@using (Html.BeginForm())
{
<p>
    Title: @Html.TextBox("SearchString") <br />
    <input type="submit" value="Filter" />
</p>
}

谁知道如何解决这个问题我已经困惑了一段时间了

当前对控制器类型{x}的操作{x}的请求是不明确的

用attribute装饰你的actions,来区分它是get action还是post action:

[HttpGet]
  public ActionResult Index()
  {
        return View();
  }  
  [HttpPost]
  public ActionResult Index(string SearchString)
  {
        var Client = from c in db.Clients
                     select c;
        if (!String.IsNullOrEmpty(SearchString))
        {
            Client = Client.Where(s => s.Name.Contains(SearchString));
        }
        return View(Client);
   }

可能您错过了[HttpPost]属性与字符串参数:

通常,您希望Index()操作方法在响应GET请求时返回一个视图。该视图呈现一个表单,该表单将POST到一个名为Index的操作方法。你想让它以带字符串参数的结尾

ASP。NET不知道该使用哪一种方法。[HttpPost]属性告诉它一个用于POST,另一个用于GET。