已定义的成员称为“搜索”,具有相同的参数类型

时间:2013-06-25 13:13:48

标签: c# asp.net asp.net-mvc-4

我遇到了一个令人困惑的错误,我不太清楚为什么。通常,当您有两个ActionResults时会弹出这种错误,并在其中一个上忘记[HttpPost]。但正如您所看到的,我 [HttpPost],那么可能导致此问题的原因是什么?

错误:Type 'PersonalWebsite.Controllers.BlogController' already defines a member called 'Search' with the same parameter types Controllers\BlogController.cs

和代码:

//
// GET: /Blog/Search

public virtual ActionResult Search()
{
    return RedirectToAction(MVC.Blog.Index());
}

//
// POST: /Blog/Search

[HttpPost]
[ValidateInput(false)]
public virtual ActionResult Search(SearchViewModel model)
{
    // irrelevant code snipped

    return View(model);
}

此控制器中没有定义其他Search()方法。这很奇怪。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您的Search方法已在另一个partial中定义。

见这里:https://github.com/Imdsm/PersonalWebsite/blob/master/PersonalWebsite/BlogController.generated.cs

[NonAction]
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public virtual System.Web.Mvc.ActionResult Search()

答案 1 :(得分:2)

您可以通过以下方式为方法创建别名:

    [HttpPost]
    [ValidateInput(false)]
    [ActionName("Search")]
    public virtual ActionResult SearchByPost(SearchViewModel model)
    {
        // irrelevant code snipped

        return View(model);
    }