如何从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;
}
}
答案 0 :(得分: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;
}
答案 1 :(得分:0)
我认为正在发生的事情是,您在同一个控制器和WebApi(或REST)服务中有多个Get
,Put
,Post
等等。请求的动作类型。无论哪种方式,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"});