簡體   English   中英

控制器的動作在具有相同名稱的基類的動作之間是不明確的。

[英]The controller's action is ambiguous between the action of the baseclass with same name.

控制器類型ContactController上的當前動作“索引”請求在以下操作方法之間不明確:

System.Web.Mvc.ActionResult Index() on type RX.Web.Controllers.ContactController
System.Web.Mvc.ActionResult Index() on type RX.Web.Controllers.CustomControllerBase2[[RX.Core.Model.Contact, RXTechJob.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] 

聯系控制器:

        public virtual new ActionResult Index()
    {
        return base.Index();
    }

基礎控制器:

        public virtual ActionResult Index()
    {

        return View("Index", SelectAll());

    }

為什么會這樣? 怎么解決? 謝謝!

您正在創建一個名為index的第二個方法,MVC不知道如何處理。 請參閱此處,了解有關virtual new的另一種不重寫方法的討論。

相反,您的聯系控制器會考慮以下內容:

public override ActionResult Index() {
        return base.Index();
}

感謝您的回答。

因為stackoverflow無法識別我的Gooogle OpenID,所以我創建了一個新帳戶並再次回來:)

我不能使用“覆蓋”因為我正在使用T4MVC

所以我修復它:

基本控制器(將“public”替換為“protected”):

        protected virtual ActionResult Index()
    {

        return View("Index", SelectAll());

    }

聯絡管理員:

        public virtual new ActionResult Index()
    {
        return base.Index();
    }

在T4MVC自動生成的代碼中,它可以被覆蓋:

        public override System.Web.Mvc.ActionResult Index() {
        var callInfo = new T4MVC_ActionResult(Area, Name, Actions.Index);
        return callInfo;
    }

看起來,現在一切正常。 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM