Я хотел бы использовать функциональность шаблонных помощников MVC Asp.net для создания стандартного пользовательского интерфейса для моих объектов во всем приложении, но я столкнулся со значительной проблемой:
Я не передаю напрямую классТипы из моих контролеров в своих взглядах.Вместо этого я передаю типы интерфейсов .. с фактической реализацией Модели, заключенной в определенный класс Mongo или NHibernate в проекте с косвенной ссылкой.
Для обсуждения мои объекты выглядят так:
public interface IProductRepository {
IProduct GetByName(string name);
}
public interface IProduct {
string Name { get; set; }
}
public class NHibernateProductRepository : IProductRepository {
public IProduct GetByName(string name) {
/* NHibernate Magic here */
return nhibernateFoundProduct;
}
}
public class NHibernateProduct : IProduct {
public virtual Name { get; set; }
}
public class ProductController : Controller {
public ProductController(IProductRepository productRepo) {
_ProductRepo = productRepo;
}
public ActionResult Index(string name) {
IProduct product = _ProductRepo.GetByName(name);
return View(product);
}
}
Можно ли использовать типы интерфейсов с синтаксисом Editor.For ()?Есть ли какие-либо проблемы или проблемы, о которых мне нужно знать?
У меня есть файл EditorTemplate \ IProduct.ascx.В настоящее время я не могу заставить этот шаблон отображаться без жесткого кодирования имени «IProduct» в вызове Editor.For ().Я бы предпочел этот тип «Соглашения над конфигурацией» ....