using IBCPackTrack.Data; using IBCPackTrack.Models; using IBCPackTrack.Web.Filters; using IBCPackTrack.Web.ViewModels; using System; using System.IO; using System.Linq; using System.Web; using System.Web.Mvc; namespace IBCPackTrack.Web.Controllers { public class RunSheetDetailsController : Controller { private ApplicationUnit _unit = new ApplicationUnit(); //[AllowAnonymous] public ActionResult Index() { RunSheetDetailsListViewModel vm = new RunSheetDetailsListViewModel(); var query = this._unit.RunSheetDetails.GetAll(); //.GetAll().OrderBy(rnh => rnh.Route.rte_name); vm.RunSheetDetails = query.ToList(); return View("Index", vm); } [ActionName("Edit")] public ActionResult Get(Guid id) { RunSheetDetailViewModel vm = new RunSheetDetailViewModel(); vm.RunSheetDetail = this._unit.RunSheetDetails.GetById(id); if (vm.RunSheetDetail != null) { return View("RunSheetDetail", vm); } } }Controllers has a sub-folder called "api" where I have my RunSheetDetailsAPIController.cs:
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Web.Http; using IBCPackTrack.Data; using IBCPackTrack.Models; using System.Data.Entity.Infrastructure; namespace IBCPackTrack.Web.Controllers { //[Authorize] public class RunSheetDetailsAPIController : ApiController { private ApplicationUnit _unit = new ApplicationUnit(); [HttpGet] //[AllowAnonymous] public IEnumerable<RunSheetDetail> Get() { return this._unit.RunSheetDetails.GetAll(); } [HttpGet] public IEnumerable<RunSheetDetail> Get(Guid id) { return this._unit.RunSheetDetails.GetByRunSheetId(id); } } }The view of the page that is supposed to make this call has this code in it:
<a class="btn btn-primary btn-mini" data-bind="attr: {href: '/runsheetdetails/' + rnh_pk}">Select</a>My WebApiConfig has this code:
config.Routes.MapHttpRoute( name: "APIrnd", routeTemplate: "api/runsheetdetails/{id}", defaults: new { controller = "RunSheetDetailsAPI", id = RouteParameter.Optional }); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional }What happens when I click on the link defined above, the code runs through the RunSheetDetailsAPIController rather than the RunSheetDetailsController, so all I get back is the json, whereas I want the index.cshml to display the json in the view.