Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.Net MVC Web Api函数为完全不同的调用返回错误_C#_Javascript_Asp.net_Asp.net Mvc_Asp.net Web Api - Fatal编程技术网

C# ASP.Net MVC Web 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

我有以下Api控制器:

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
  • 对于按Id列出的资源,请使用
    GET/api/family/2
    GET/api/family?Id=2
  • 有关ASP.NET Web API路由的详细信息,请阅读以下内容:


    但基本上: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);