这是我的 VS 解决方案:
Core Library - contains Controllers
Project A - references Core
Project B - references Core
这两个项目都有基于引用的核心库的路由。但是,我想根据哪个项目(又名“站点”)正在调用该函数来覆盖某些控制器函数。我已经尝试创建从核心库控制器继承的项目 B 控制器,使核心功能虚拟并将项目 B 控制器功能设置为“覆盖”。然而,项目 B 控制器甚至从未被调用过。
这可能吗?如何让项目覆盖核心控制器功能?
更新:帖子根据下面的评论进行了更新,但仍然不确定为什么这在 MVC 中不起作用。
这是项目 B 中控制器的代码:
public class BaseController : Controller
{
public StateLevelViewModel GetStateLevelLandingResults(string State, int level)
{
var data = GetStateCityBreakdown(stateAbbrev, level);
}
public virtual List<StateCityBreakdownModel> GetStateCityBreakdown(string stateAbbrev, int level)
{
return db.Database.SqlQuery<StateCityBreakdownModel>("GetCountsByStateAndCity @state, @level",
new SqlParameter("state", stateAbbrev),
new SqlParameter("level", level)).ToList();
}
}
public class BaseController : XYZ.Controllers.BaseController
{
public override List<StateCityBreakdownModel> GetStateCityBreakdown(string stateAbbrev, int level)
{
return db.Database.SqlQuery<StateCityBreakdownModel>("GetCountsByStateAndCityForPartnership @state, @level, @partner",
new SqlParameter("state", stateAbbrev),
new SqlParameter("level", level),
new SqlParameter("partner", 2)).ToList();
}
}
更新 2:继承控制器完全被忽略。问题是该项目根本无法识别控制器。