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

Asp.net mvc 如何从mvc4中的不同视图页面调用webapi控制器方法?,asp.net-mvc,asp.net-web-api,Asp.net Mvc,Asp.net Web Api,如何从mvc4中的不同视图页调用webapi控制器方法 这是我的控制器: /api/GetEmployee/1 public EmployeeVM GetEmployee(int id) { using (var db = new WorkerDBContext()) { var model = db.Employee.Find(id); if (model != null)

如何从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;
        }

    }

您需要将数据访问代码移动到另一个类(存储库模式非常适合),然后从两个控制器调用该方法

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;
}

我认为现在的情况是,在同一个控制器中有多个
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"});

您的WebApi控制器名是否为GetEmployee?或者这就是方法名?如果是这样,那么控制器名称是什么?GetEmployee name是我的methode name我的web api控制器名称是userprofile,所以问题是..我有很多方法用于post、put、delet,就像这样一些方法我可以在不同的视图中使用ajax调用,但有些方法我不能..请帮助我。。