ViewDataFactory和强类型母版页
我试图让我的强类型母版页在我的ASP MVC 2.0应用程序中工作。 我在这两个post的帮助下走得很远:
将数据传递到ASP.NET MVC中的母版页
强类型的ASP.Net MVC母版页
问题是,我不知道如何使ViewDataFactory代码工作,这是我的代码:
BaseController.cs
public class BaseController : Controller { private IPageRepository _repPage; public BaseController(IPageRepository repPage) { _repPage = repPage; } protected T CreateViewData() where T : MasterViewData, new() { IViewDataFactory factory = new ViewDataFactory(); IEnumerable pages = _repPage.GetAllPages(); return factory.Create(pages); } }
HomeController.cs
public class HomeController : BaseController { public ActionResult Index() { HomeViewData viewData = CreateViewData(); viewData.Name = "Test"; return View("Index", viewData); } public ActionResult About() { return View(); } }
ViewDataFactory.cs
public interface IViewDataFactory { T Create(IEnumerable pages) where T : MasterViewData, new() } public class ViewDataFactory : IViewDataFactory { public ViewDataFactory() { } }
HomeViewData.cs
public class HomeViewData : MasterViewData { public string Name { get; set; } }
MasterViewData
public class MasterViewData { public IEnumerable Pages { get; set; } }
当我构建解决方案时,我得到了以下构建错误:
"; expected" in ViewDataFactory.cs
哪个指向代码段:
T Create(IEnumerable pages) where T : MasterViewData, new()
我想我错过了必不可少的东西,我对此很新,任何帮助都将不胜感激!
为什么不在该行的末尾添加分号? 🙂
抽象方法(以及接口方法)使用分号代替正文。
由于Aviad P.的建议和一些反复试验,我终于得到了它的工作。
这就是我的IViewDataFactory
最终看起来像:
public interface IViewDataFactory { T Create(IEnumerable pages) where T : MasterViewData, new(); } public class ViewDataFactory : IViewDataFactory { public T Create(IEnumerable pages) where T : MasterViewData, new() { T t = new T(); t.Pages = pages; return t; } }