C# ASP.Net MVC Web Api函数为完全不同的调用返回错误
我有以下Api控制器:C# ASP.Net MVC Web Api函数为完全不同的调用返回错误,c#,javascript,asp.net,asp.net-mvc,asp.net-web-api,C#,Javascript,Asp.net,Asp.net Mvc,Asp.net Web Api,我有以下Api控制器: public class FamilyController : ApiController { ApplicationDb db = new ApplicationDb(); public IEnumerable<Family> GetFamilies() { return db.Families.AsNoTracking().OrderBy(n => n.FamilyName); } publ
public class FamilyController : ApiController
{
ApplicationDb db = new ApplicationDb();
public IEnumerable<Family> GetFamilies()
{
return db.Families.AsNoTracking().OrderBy(n => n.FamilyName);
}
public Family GetFamily(int id)
{
return db.Families.AsNoTracking().Single(n => n.FamilyID == id);
}
}
以及视图上的以下javascript:
@Scripts.Render("~/bundles/knockout")
@Scripts.Render("~/bundles/functions")
<script type="text/javascript">
function viewModel() {
var self = this;
self.Families = ko.observableArray([]);
self.Init = function () {
dbApp.Db.getFamilies()
.done(function (data) {
self.Families(data);
});
};
self.Init();
}
var model = new viewModel();
ko.applyBindings(model);
</script>
您应该使用以下URL:
GET/api/family
GET/api/family/2
或GET/api/family?Id=2
但基本上:URL到action方法的映射将主要由HTTP方法和action方法名称中的模式以及方法签名决定
GET/api/family
将被映射到一个名为类似GET的方法,并且不包含其他参数。控制器内将有更多操作,因此需要操作名称,感谢您提醒更改路由,但是我添加了以下内容:config.routes.MapHttpRoute(名称:“ActionApi”,routeTemplate:“api/{controller}/{action}/{id}”,默认值:new{id=RouteParameter.Optional});没有什么不同。请擦掉它,改成默认的api并开始工作,谢谢。
@Scripts.Render("~/bundles/knockout")
@Scripts.Render("~/bundles/functions")
<script type="text/javascript">
function viewModel() {
var self = this;
self.Families = ko.observableArray([]);
self.Init = function () {
dbApp.Db.getFamilies()
.done(function (data) {
self.Families(data);
});
};
self.Init();
}
var model = new viewModel();
ko.applyBindings(model);
</script>
var passedId = @ViewBag.PassedID;
function viewModel() {
var self = this;
self.Family = ko.observable();
self.FamilyName = ko.observable();
self.Init = function() {
dbApp.Db.getFamily(passedId)
.done(function(data){
self.Family(data);
self.FamilyName(data.FamilyName);
});
};
self.Init();
}
var model = new viewModel();
ko.applyBindings(model);