加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – asp.net mvc通用控制器

发布时间:2020-12-15 22:48:44 所属栏目:asp.Net 来源:网络整理
导读:我正在考虑在ASP.NET MVC中实现一个通用控制器. PlatformObjectControllerT 其中T是(生成)平台对象. 这可能吗?有经验/文件吗? 一个相关的问题是如何产生的URL. 解决方法 是的,你只是不能直接使用它,但你可以继承它并使用孩子 这里是我使用的: public clas
我正在考虑在ASP.NET MVC中实现一个通用控制器.
PlatformObjectController<T>

其中T是(生成)平台对象.

这可能吗?有经验/文件吗?

一个相关的问题是如何产生的URL.

解决方法

是的,你只是不能直接使用它,但你可以继承它并使用孩子

这里是我使用的:

public class Cruder<TEntity,TInput> : Controller
        where TInput : new()
        where TEntity : new()
    {
        protected readonly IRepo<TEntity> repo;
        private readonly IBuilder<TEntity,TInput> builder;


        public Cruder(IRepo<TEntity> repo,IBuilder<TEntity,TInput> builder)
        {
            this.repo = repo;
            this.builder = builder;
        }

        public virtual ActionResult Index(int? page)
        {
            return View(repo.GetPageable(page ?? 1,5));
        }

        public ActionResult Create()
        {
            return View(builder.BuildInput(new TEntity()));
        }

        [HttpPost]
        public ActionResult Create(TInput o)
        {
            if (!ModelState.IsValid)
                return View(o);
            repo.Insert(builder.BuilEntity(o));
            return RedirectToAction("index");
        }
    }

和用法:

public class FieldController : Cruder<Field,FieldInput>
    {
        public FieldController(IRepo<Field> repo,IBuilder<Field,FieldInput> builder)
            : base(repo,builder)
        {
        }
    }

    public class MeasureController : Cruder<Measure,MeasureInput>
    {
        public MeasureController(IRepo<Measure> repo,IBuilder<Measure,MeasureInput> builder) : base(repo,builder)
        {
        }
    }

    public class DistrictController : Cruder<District,DistrictInput>
    {
        public DistrictController(IRepo<District> repo,IBuilder<District,DistrictInput> builder) : base(repo,builder)
        {
        }
    }

    public class PerfecterController : Cruder<Perfecter,PerfecterInput>
    {
        public PerfecterController(IRepo<Perfecter> repo,IBuilder<Perfecter,PerfecterInput> builder) : base(repo,builder)
        {
        }
    }

代码在这里:
http://code.google.com/p/asms-md/source/browse/trunk/WebUI/Controllers/FieldController.cs

更新:

现在使用这种方法:http://prodinner.codeplex.com

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读