Tôi đang điều chỉnh dự án nguồn mở (NopCommerce). Nó là một phần mềm tuyệt vời và hỗ trợ khả năng mở rộng bằng cách sử dụng các plugin. Đối với một plugin, tôi muốn thêm thông tin vào một khung nhìn, để làm điều đó, tôi muốn kế thừa từ Controller và ghi đè lên các hành động mà tôi cần phải thay đổi. Vì vậy, đây là bộ điều khiển của tôi:Có cách nào để ghi đè lên một hành động điều khiển MVC?
public class MyController : OldController{
//stuff
public new ActionResult Product(int productId)
{
//Somestuff
}
}
tôi đã thay đổi con đường từ plugin của tôi, nhưng khi hành động này được gọi là tôi nhận được lỗi sau:
The current request for action 'Product' on controller type 'MyController' is ambiguous between the following action methods: System.Web.Mvc.ActionResult Product(Int32) on type MyPlugin System.Web.Mvc.ActionResult Product(Int32) on type OldController
Có cách nào tôi có thể ghi đè phương pháp này ? (Ps: Tôi không thể sử dụng từ khóa override bởi vì nó không được đánh dấu là ảo, trừu tượng hoặc ghi đè trong OldController)
cảm ơn, Oscar
Làm thế nào về việc không _deriving_ từ 'OldController' nhưng thay vì cung cấp tất cả các 'OldController' phương pháp bọc trong' bạn lớp MyController' (loại tương tự như [mô hình Proxy] (http://www.dofactory.com /Patterns/PatternProxy.aspx#_self1)) –
Nếu nó được đánh dấu là ảo thì nó có hoạt động không? Tôi đã suy nghĩ một cách sai lầm rằng những gì bạn đã có thể đã làm việc – Rikon
những gì bạn muốn đạt được mà không phải là dễ dàng mở rộng từ lớp điều khiển hiện tại? –