0

如何从 mvc4 中的不同视图页面调用 webapi 控制器方法?

这是我的控制器:

/api/GetEmployee/1

    public EmployeeVM GetEmployee(int id)
    {
        using (var db = new WorkerDBContext())
        {
            var model = db.Employee.Find(id);
            if (model != null)
            {
                return model;
            }
            return null;
        }

    }
4

2 回答 2

1

您需要将您的数据访问代码移动到另一个类(存储库模式将是一个不错的选择),并且只需从两个控制器中调用该方法。

public class EmployeeRepository
{
     private readonly WorkerDBContext _workerDbContext = new WorkerDBContext();
     public Employee GetEmployee(int id)
     {
          var model = _workerDbContext.Employee.Find(id);
          return model;
     }
}

然后从你的控制器:

private readonly EmployeeRepository _employeeRepository = new EmployeeRepository();

public EmployeeVM GetEmployee(int id)
{
      var employee = _employeeRepository.GetEmployee(id);
      var viewModel = new EmployeeVM { Name = employeeName, ... };
      return viewModel;
}
于 2013-08-14T13:43:38.453 回答
0

我认为正在发生的事情是您在同一个控制器中有多个Get, Put,Post等,并且 WebApi (或 REST )服务基于请求的操作类型工作。无论哪种方式,WebApi 中的默认路由都没有操作,因此请对您的路由进行以下更改:

config.Routes.MapHttpRoute(
    name: "ActionRoute",
    routeTemplate: "api/{controller}/{action}/{id}",
    defaults: new { id = RouterParameter.Optional }
);

然后以这种方式创建到您的 api 控制器的链接/调用:

@Url.RouteUrl("ActionRoute", new {httproute= "", controller = "controller", action = "action"});
于 2013-08-16T12:26:39.553 回答