当然!因此,对于与您想要呈现的视图相关的 Action 方法,您将编写类似这样的基本内容。
没有进程的控制器。
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
//or some model initiation if needed
public ActionResult Index(ViewModel model)
{
return View(model);
}
}
然后,您可以从这里开始创建 API 控制器方法,就像为 ActionResult 方法创建的一样,唯一的区别是返回类型。您的 api 控制器应该对应于您打算对其运行查询的任何模型实例。就个人而言,我更喜欢创建一个与每个数据库抽象相关的模型,即。ContactController、AccountController 等。
private readonly IRepository repo;
//This is a generic repository I do not know if you are using this methodology.
//but this is strictly for demo purposes.
public ValuesController(IRepository<SomeModel> repo)
{
this.repo = repo;
}
public IEnumerable<SomeModel> Get()
{
var commands = repo.GetAll();
return commands.ToList();
}
// GET api/values/5
public IQueryable<SomeModel> Get(int id)
{
var commands = repo.GetAll().AsQueryable();
return commands;
}
// POST api/values
public HttpResponseMessage Post(SomeModel model)
{
repo.Add(model);
var response = Request.CreateResponse<SomeModel>(HttpStatusCode.Created, model);
string uri = Url.Link("DefaultApi", new { id = model.Id});
response.Headers.Location = new Uri(uri);
return response;
}
// PUT api/values/5
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/values/5
public void Delete(int id)
{
}
如您所见,这是从 Empty Api 控制器类构建的。最后,您可以通过运行以下 Jquery 代码从您想要的任何视图调用您的 api 控制器。
self.get = function () {
$.ajax({
url: '/api/Values',
cache: false,
type: 'GET',
contentType: 'application/json; charset=utf-8',
data: {},
success: function (data) {
//Success functions here.
}
});
}
至于你的发帖方式……
self.create = function (formElement) {
$.ajax({
url: '/api/Values',
cache: false,
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: ko.toJSON(Command),
success: function (data) {
//Success function here.
}
}).fail(
//Fail function here.
});
如果您需要完整的代码片段来了解如何将所有这些与敲除一起包装,这里的 javascript 来自 knockout.js 方法,请告诉我!但我希望这会让你朝着正确的方向前进!