Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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
Asp.net 用于插入复杂类型数据的Web Api POST始终为空_Asp.net_Asp.net Mvc_Asp.net Mvc 4_Asp.net Web Api_Asp.net Web Api2 - Fatal编程技术网

Asp.net 用于插入复杂类型数据的Web Api POST始终为空

Asp.net 用于插入复杂类型数据的Web Api POST始终为空,asp.net,asp.net-mvc,asp.net-mvc-4,asp.net-web-api,asp.net-web-api2,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Asp.net Web Api,Asp.net Web Api2,我对Web Api的概念很陌生。尝试使用Microsoft提供的基本项目插入数据(将简单测试客户端添加到ASP.NET Web API帮助页) 下面是将数据插入总部表的代码。(HeadofficeID int、HeadofficeName varchar(50)、Notes varchar(1000)、Isactive位) 总部模型类 public partial class HeadOfficeModel : AtlAuthenticationModelBase {

我对Web Api的概念很陌生。尝试使用Microsoft提供的基本项目插入数据(将简单测试客户端添加到ASP.NET Web API帮助页)

下面是将数据插入总部表的代码。(HeadofficeID int、HeadofficeName varchar(50)、Notes varchar(1000)、Isactive位)

总部模型类

public partial class HeadOfficeModel : AtlAuthenticationModelBase
    {
        public int HeadOfficeId { get; set; }
        public string HeadOfficeName { get; set; }
        public string Notes { get; set; }
        public bool IsActive { get; set; }
    }
在前端,当我尝试从URI或Body发送数据时,只插入空值。在调试时,我在总部模型中看到的只有空值

1) {"HeadOfficeName":"TestHO1", "Notes":"notes", "IsActive":true}
2) {"TestHO1", "notes", true}
3) ={"headOffices":{"HeadOfficeName":"TestHO1","Notes":"notes","IsActive":false}}
并尝试更改代码,如下所示

public HttpResponseMessage Post([FromUri]HeadOfficeModel headOffices)
public HttpResponseMessage Post([FromBody]HeadOfficeModel headOffices)
public HttpResponseMessage Post([ModelBinder]HeadOfficeModel headOffices)
两天来一直在努力解决这个问题。当我以复杂类型发送数据时,它不作为单独的参数工作(更改方法以接受参数),工作正常

  public int Post(string Name, string Notes, bool Active)
    {
        HeadOfficeModel objHOM = new HeadOfficeModel();
        objHOM.HeadofficeName = Name;
        objHOM.Notes = Notes;
        objHOM.IsActive = Active;
        return _headOfficeBLL.Insert(objHOM);
    }
下面是我在插入时打钩的html代码

<script>
  testClientModel = {
    HttpMethod: '@Model.ApiDescription.HttpMethod',
    UriPathTemplate: @Html.Raw(Json.Encode(Model.ApiDescription.RelativePath)),
    UriParameters: [
            @foreach (var parameter in Model.ApiDescription.ParameterDescriptions)
            {
              if (parameter.Source == System.Web.Http.Description.ApiParameterSource.FromUri)
              {
                    @:{ name: "@parameter.Name", value: "" },
                }
            }
    ],
    Samples: {
      @Html.Raw(@String.Join(",", Model.SampleRequests.Select(s => String.Format("\"{0}\": \"{1}\"", s.Key, HttpUtility.UrlEncode(s.Value.ToString()))).ToArray()))
    },
    BaseAddress: '@applicationPath'
  };
</script>

testClientModel={
HttpMethod:“@Model.apisdescription.HttpMethod”,
UriPathTemplate:@Html.Raw(Json.Encode(Model.apiscription.RelativePath)),
URI参数:[
@foreach(Model.apiscription.ParameterDescriptions中的var参数)
{
if(parameter.Source==System.Web.Http.Description.apipParameterSource.FromUri)
{
@:{name:@parameter.name”,值:},
}
}
],
样本:{
@Html.Raw(@String.Join(“,”,Model.SampleRequests.Select(s=>String.Format(“\”{0}\”:\“{1}\”,s.Key,HttpUtility.UrlEncode(s.Value.ToString()))).ToArray())
},
基本地址:“@applicationPath”
};
你能帮我一下我哪里出了问题吗。附加屏幕截图

在URI和Body中输入只是为了表明我尝试了不同的方法。

您是否会共享使用该方法的代码?[POST(“create”)]public HttpResponseMessage POST([FromUri]headoffice-model-headOffices){if(_-headofficebl.Insert(headOffices)>0)return Request.CreateResponse(HttpStatusCode.Created,headOffices);else return Request.CreateResponse(HttpStatusCode.BadRequest,总部);}我不是在说这个。我想知道你从哪里调用这个方法?它是ajax还是html格式?嗨,Mahbubur,下面是代码testClientModel={HttpMethod:'@Model.apisdescription.HttpMethod',UriPathTemplate:@html.Raw(Json.Encode(Model.apisdescription.RelativePath)),UriParameters:[@foreach(Model.apisdescription.ParameterDescriptions中的var参数){如果(parameter.Source==System.Web.Http.Description.ApiParameterSource.FromUri){@:{name:“@parameter.name”,value:”},},}),Samples:@Html.Raw(@String.Join(“,”,Model.SampleRequests.Select)(s=>String.Format(“\“{0}\”:“{1}\”,s.Key,HttpUtility.UrlEncode(s.value.ToString()))).ToArray())},BaseAddress:“@applicationPath”};如果您在注释中编写代码,则无法理解。您可以使用此更新您的问题。
<script>
  testClientModel = {
    HttpMethod: '@Model.ApiDescription.HttpMethod',
    UriPathTemplate: @Html.Raw(Json.Encode(Model.ApiDescription.RelativePath)),
    UriParameters: [
            @foreach (var parameter in Model.ApiDescription.ParameterDescriptions)
            {
              if (parameter.Source == System.Web.Http.Description.ApiParameterSource.FromUri)
              {
                    @:{ name: "@parameter.Name", value: "" },
                }
            }
    ],
    Samples: {
      @Html.Raw(@String.Join(",", Model.SampleRequests.Select(s => String.Format("\"{0}\": \"{1}\"", s.Key, HttpUtility.UrlEncode(s.Value.ToString()))).ToArray()))
    },
    BaseAddress: '@applicationPath'
  };
</script>