- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想重构我的基本 CRUD 操作,因为它们非常重复,但我不确定最好的方法。我所有的 Controller 都继承了 BaseController,它看起来像这样:
public class BaseController<T> : Controller where T : EntityObject
{
protected Repository<T> Repository;
public BaseController()
{
Repository = new Repository<T>(new Models.DatabaseContextContainer());
}
public virtual ActionResult Index()
{
return View(Repository.Get());
}
}
我像这样创建新的 Controller :
public class ForumController : BaseController<Forum> { }
非常简单,如您所见,我的 BaseController
包含一个 Index()
方法,这意味着我的 Controller 都有一个 Index 方法,并将加载它们各自的 View 和来自存储库的数据 - 这非常有效。我在编辑/添加/删除方法上苦苦挣扎,我的存储库中的 Add
方法如下所示:
public T Add(T Entity)
{
Table.AddObject(Entity);
SaveChanges();
return Entity;
}
再一次,很好很容易,但在我的 BaseController
中我显然不能这样做:
public ActionResult Create(Category Category)
{
Repository.Add(Category);
return RedirectToAction("View", "Category", new { id = Category.Id });
}
我通常会这样:有什么想法吗?我的大脑似乎无法通过这个.. ;-/
最佳答案
您可以添加一个由所有实体共享的接口(interface):
public interface IEntity
{
long ID { get; set; }
}
并让你的基础 Controller 需要这个:
public class BaseController<T> : Controller where T : class, IEntity
这将允许您:
public ActionResult Create(T entity)
{
Repository.Add(entity);
return RedirectToAction("View", typeof(T).Name, new { ID = entity.ID });
}
您还应该考虑使用依赖项注入(inject)来实例化您的 Controller ,以便注入(inject)您的存储库而不是手动实例化,但这是一个单独的主题。
关于c# - MVC BaseController 处理 CRUD 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5358081/
默认的 HomeController 类是使用定义的 class HomeController extends BaseController { 但是,当通过 artisan 创建资源 Control
我有一个 BaseController,如下所示: public class BaseController : Controller { string ApplicationName;
我有一个 basecontroller,其属性如下: public class BaseController : Controller { public User CurrentUser {g
我有以下 BaseApiController: public class BaseApiController : ApiController { public readonly Current
我有一个定义如下的基本 Controller ,但是采用 ISiteService 的构造函数永远不会执行: public class BaseController : Controller {
我已经在 Silex 1.3.4 中创建了一个简单的应用程序,我想要一个基本 Controller ,它有一个接受 $app 和 $request 的 __construct 方法。所有继承的 Con
我有一类属性,这些属性是从我需要在我的 MVC 应用程序的每个 View 上都可用的服务中设置的。 因此,我创建了一个“基础 View 模型”,我的 View 模型将从中继承。 public clas
我应该创建一个包含多个部分的网站。这些部分的功能和 View 完全相同,但我想要不同的 URL,例如 //localhost:111/Works/索引 //localhost:111/OldJobs/
我有一个与 Entity Framework 通信的基础 Controller 。我正在创建一个 dbContext 来与基本 Controller 中的实体对话。当我将家庭 Controller 继
在我的 Global.asax 中,我在 Session_Start() 中有这段代码: UserIntranet user = new UserIntranet(); user.Login = th
我有一个这样的管理命名空间: namespace :admin do resources :users resources :base end 目录结构如下: /app/con
我需要所有 Controller 中的一些通用行为。有一个 BaseController 并让所有 Controller 都扩展该类是个好主意吗?如果是这样,避免 Fatal error: Class
我看了更多关于 MVC 的教程。但我不明白,人们使用“BaseController”做什么?在一个项目中,有人用它来进行所有 Controller 之间的通信。在其他项目中有人用于获取日志。你能给我解
我正在尝试构建我的 Laravel 4 站点,以便 (1) 主要应用程序组的组件( Controller / View /等)耦合在一起,以及 (2) Laravel 的支持代码位于我的 Web 服务
我需要执行以下操作:我已经准备好一些 Controller 并正在运行,但现在我想创建一个 BaseController。我的每个 Controller 都应该像这样继承它: public class
我目前正在努力让 WebApi 中的继承像我想要的那样工作。也许你能给我指出正确的方向? 我的目标是拥有一个通用的 WebApi 项目,它可以在多个其他 WebApi 项目中重复使用。 例如:我有一个
我想重构我的基本 CRUD 操作,因为它们非常重复,但我不确定最好的方法。我所有的 Controller 都继承了 BaseController,它看起来像这样: public class BaseC
我正在尝试在所有 ASP.Net MVC Controller 中共享我的 IMapper Mapper 静态类。但是不知道如何创建从基本 Controller 派生的 Controller 。 我尝
我在 app/controllers/v1/white_label_api 中创建 Controller class Api::WhiteLabel::V1::BaseController < App
我创建了一个 BaseController,我将它混入其他 Controller 。 例子: class BaseController () { def somemethod () { r
我是一名优秀的程序员,十分优秀!