如何在Ntier MVC c#中用动态模型类传递参数

本文关键字:模型 动态 参数 Ntier MVC | 更新日期: 2023-09-27 18:21:48

首先,

我的控制器代码是;

public ActionResult Menuler_Delete(int id)
        {
           Menuler val = general_service.getMenu(id);
            general_service.Delete(val);
            return RedirectToAction("Menuler", "Admin");
         }

我的通用代码是;

public Menuler getMenu(int id)
        {
            MenulerService mservice = new MenulerService();
            return mservice.getMenu(id);
        }
        public void Delete( T model ) 
        {
            DbIslemler<T> islem = new DbIslemler<T>();
            islem.Delete(model);
        }

菜单服务代码为;

public class MenulerService
    {
        DbIslemler<Menuler> menuler_service = new DbIslemler<Menuler>();
        public Menuler getMenu( int id)
        {
           return menuler_service.Find(id);
        }
    }

我的DBIslemler代码是;

public class DbIslemler<T> : IDbIslemler<T> where T : class
    {
 public void Delete(T model)
        {
            _database.Set<T>().Remove(model);
            _database.SaveChanges();
        }
        public void Delete(object id)
        {
            T val = _database.Set<T>().Find(id);
            _database.Set<T>().Remove(val);
            _database.SaveChanges();
        }
public T Find(object id)
        {
           return _database.Set<T>().Find(id);
        }
}
namespace NTierMvc.DataAccess
{
    public class DataBase : DbContext
    {
        public DbSet<Popup> Popups { get; set; }
        public DbSet<New> News{ get; set; }
        public DbSet<Menuler> Menulers { get; set; }
    }
}

现在,我想将void Delete(T模型)值控制器传递给通用服务。但我的模型类(T)是可变的。有时是无效删除(菜单型号),有时是无效Delete(Popup机型),有时无效Delete(新闻车型)

我该怎么做?谢谢

如何在Ntier MVC c#中用动态模型类传递参数

根据您所说的,您希望能够将任何实体传递给generalservice.Delete()。您可以通过使Delete方法通用来实现这一点,而不必使整个通用服务为通用:

public class GeneralService
{
    public void Delete<T>( T model ) 
    {
        DbIslemler<T> islem = new DbIslemler<T>();
        islem.Delete(model);
    }
}

然而,我想说,这看起来不是一个好的做法。您已经有了MenuService,为什么不使用它来删除菜单对象呢?GeneralService看起来像是控制器和服务之间不必要的一层。