在ASP.NET MVC中一个控制器不能直接调用另一个控制器中的方法,因为Controller类被设计成不能实例化。解决这个问题的一个方法是创建一个可重用的服务层或领域层,在这个层次中定义可以被不同控制器调用的方法。这样,可以在不同的控制器中调用这些方法,来执行删除数据等操作。
以下是一个简单的示例:
首先,定义一个服务层接口:
public interface IDataService { void DeleteData(int id); }
然后,在服务层中实现这个接口:
public class DataService : IDataService { public void DeleteData(int id) { //在这里写删除数据的逻辑代码 } }
最后,在不同的控制器中引用这个服务层,并调用它的方法:
public class HomeController : Controller { private IDataService _dataService;
public HomeController(IDataService dataService)
{
_dataService = dataService;
}
public ActionResult Delete(int id)
{
_dataService.DeleteData(id);
return RedirectToAction("Index");
}
}
使用依赖注入容器来注入服务层实例。
这样,我们就可以在不同的控制器中调用服务层的方法来删除数据,而不需要直接调用另一个控制器。