如何在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(新闻车型)
我该怎么做?谢谢
根据您所说的,您希望能够将任何实体传递给generalservice.Delete()
。您可以通过使Delete
方法通用来实现这一点,而不必使整个通用服务类为通用:
public class GeneralService
{
public void Delete<T>( T model )
{
DbIslemler<T> islem = new DbIslemler<T>();
islem.Delete(model);
}
}
然而,我想说,这看起来不是一个好的做法。您已经有了MenuService
,为什么不使用它来删除菜单对象呢?GeneralService
看起来像是控制器和服务之间不必要的一层。