控制器类型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());
}
为什么会这样?怎么解决?谢谢!
答案 0 :(得分:5)
您正在创建第二个名为index的方法,MVC不知道如何处理。有关virtual new
创建其他非重写方法的讨论,请参阅here。
相反,您的联系人控制器会考虑以下内容:
public override ActionResult Index() {
return base.Index();
}
答案 1 :(得分:0)
感谢您的回答。
因为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;
}
看起来,现在一切正常。 :)