来自服务层的方法在控制器动作方法中不可用

时间:2011-04-08 10:08:46

标签: c# asp.net-mvc asp.net-mvc-2 asp.net-mvc-3

我有以下服务界面:

public interface IGrantApplicationService
{
   IEnumerable<T> GetAll();
}

以下是我对界面的实现:

public class GrantApplicationService : IGrantApplicationService
{
   public IEnumerable<GrantApplication> GetAll()
   {
      // Code here
   }

   public EditGrantApplicationViewModel CreateEditGrantApplicationViewModel()
   {
      // Code here
   }
}

我的控制器:

public class GrantApplicationController : Controller
{
   private IGrantApplicationService grantApplicationService;

   public GrantApplicationController(IGrantApplicationService grantApplicationService)
   {
      this.grantApplicationService = grantApplicationService;
   }

   public ActionResult Create()
   {
      // I am trying to create my view model like this and populate it with data
      EditGrantApplicationViewModel viewModel = grantApplicationService.CreateEditGrantApplicationViewModel();

      return View(viewModel);
   }
}

请参阅我的Create方法,我试图通过服务创建我的视图模型,但是当我点击时。然后似乎没有选择CreateEditGrantApplicationViewModel的选项,只有GetAll存在。为什么是这样?我有所有正确的参考资料。

2 个答案:

答案 0 :(得分:1)

您需要定义

EditGrantApplicationViewModel CreateEditGrantApplicationViewModel();

IGrantApplicationService界面上。

目前控制器只知道接口上的内容而不是类。

答案 1 :(得分:1)

您的grantApplicationService字段被声明为IGrantApplicationService,但您的方法CreateEditGrantApplicationViewModel不在界面中。只需在界面中添加CreateEditGrantApplicationViewModel,您就可以了。