【发布时间】:2012-09-27 22:35:46
【问题描述】:
HomeController 中有一种方法叫做 Index。 (只是微软提供的默认模板)
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
return View();
}
public ActionResult About()
{
return View();
}
}
现在我想要的是...覆盖 Index 方法。如下所示。
public partial class HomeController : Controller
{
public virtual ActionResult Index()
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
return View();
}
public ActionResult About()
{
return View();
}
public override ActionResult Index()
{
ViewBag.Message = "Override Index";
return View();
}
}
我不希望对现有方法进行任何修改,例如 OO 设计中的 Open-Closed 原则。 有没有可能?还是有其他方法?
【问题讨论】:
-
你不能那样做,你试图覆盖在同一个类中声明的方法。你只能覆盖子类中的方法。如果您想“覆盖”同一个类中的方法,只需将旧方法体替换为新方法体即可。
-
如果可以的话,访问/home/index时的显示结果是什么?
-
@verdesmarald:假设我已经创建了子类。那么如何实现呢?
-
@DannyChen :结果应显示“覆盖索引”。表示应该执行被覆盖的方法。
-
要真正重写一个方法,该方法必须在基类中。在您的示例中,
Controller是没有称为“索引”的方法的基类。您的意思是要重载一个方法吗?
标签: c# asp.net-mvc-3