Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.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 WEB API中的模型绑定问题_C#_Asp.net_Asp.net Web Api_Asp.net Web Api2 - Fatal编程技术网

C# ASP.NET WEB API中的模型绑定问题

C# ASP.NET WEB API中的模型绑定问题,c#,asp.net,asp.net-web-api,asp.net-web-api2,C#,Asp.net,Asp.net Web Api,Asp.net Web Api2,在我的webapi项目中,我面临着这个奇怪的问题。 以下是我的项目的代码片段: 型号类别: [DataContract] public class StudentInfo { [Key] [DataMember] [StringLength(20)] public string StudentId {get; set;} [Key] [DataM

在我的
webapi
项目中,我面临着这个奇怪的问题。 以下是我的项目的代码片段:

型号类别:

       [DataContract]
       public class StudentInfo
       {
         [Key]
         [DataMember]
         [StringLength(20)]
         public string StudentId {get; set;}

         [Key]
         [DataMember]
         [StringLength(20)]
         public string FirstName {get; set;}

         [Key]
         [DataMember]
         [StringLength(20)]
         public string LastName {get; set;}

         [DataMember]
         [StringLength(20)]
         public string ContactNumber {get; set;}

         [DataMember]
         [StringLength(20)]
         public string Gender {get; set;}

         [DataMember]
         [StringLength(20)]
         public string Course {get; set;}

         [DataMember]
         public DateTime? CreatedDate {get; set;}
       }
    [Route("/Student/AddNewStudent")]
    [HttpPost]
    public IHttpActionResult AddNewStudent([FromBody]StudentInfo studentInfo)
    {
      /* Business Logic Here */
    }
    <StudentInfo xmlns:www.w3........ xmlns:something>
        <StudentId>ST00001</StudentId>
        <FirstName>John</FirstName>
        <LastName>Smith</LastName>
        <ContactNumber>9001236597</ContactNumber>
        <Gender>MALE</Gender>
        <Course>Computer Science</Course>
        <CreatedDate />    -- Value assigned from controller code
    </StudentInfo >
控制器类方法:

       [DataContract]
       public class StudentInfo
       {
         [Key]
         [DataMember]
         [StringLength(20)]
         public string StudentId {get; set;}

         [Key]
         [DataMember]
         [StringLength(20)]
         public string FirstName {get; set;}

         [Key]
         [DataMember]
         [StringLength(20)]
         public string LastName {get; set;}

         [DataMember]
         [StringLength(20)]
         public string ContactNumber {get; set;}

         [DataMember]
         [StringLength(20)]
         public string Gender {get; set;}

         [DataMember]
         [StringLength(20)]
         public string Course {get; set;}

         [DataMember]
         public DateTime? CreatedDate {get; set;}
       }
    [Route("/Student/AddNewStudent")]
    [HttpPost]
    public IHttpActionResult AddNewStudent([FromBody]StudentInfo studentInfo)
    {
      /* Business Logic Here */
    }
    <StudentInfo xmlns:www.w3........ xmlns:something>
        <StudentId>ST00001</StudentId>
        <FirstName>John</FirstName>
        <LastName>Smith</LastName>
        <ContactNumber>9001236597</ContactNumber>
        <Gender>MALE</Gender>
        <Course>Computer Science</Course>
        <CreatedDate />    -- Value assigned from controller code
    </StudentInfo >
我正在使用fiddler将以下xml发布到控制器:

       [DataContract]
       public class StudentInfo
       {
         [Key]
         [DataMember]
         [StringLength(20)]
         public string StudentId {get; set;}

         [Key]
         [DataMember]
         [StringLength(20)]
         public string FirstName {get; set;}

         [Key]
         [DataMember]
         [StringLength(20)]
         public string LastName {get; set;}

         [DataMember]
         [StringLength(20)]
         public string ContactNumber {get; set;}

         [DataMember]
         [StringLength(20)]
         public string Gender {get; set;}

         [DataMember]
         [StringLength(20)]
         public string Course {get; set;}

         [DataMember]
         public DateTime? CreatedDate {get; set;}
       }
    [Route("/Student/AddNewStudent")]
    [HttpPost]
    public IHttpActionResult AddNewStudent([FromBody]StudentInfo studentInfo)
    {
      /* Business Logic Here */
    }
    <StudentInfo xmlns:www.w3........ xmlns:something>
        <StudentId>ST00001</StudentId>
        <FirstName>John</FirstName>
        <LastName>Smith</LastName>
        <ContactNumber>9001236597</ContactNumber>
        <Gender>MALE</Gender>
        <Course>Computer Science</Course>
        <CreatedDate />    -- Value assigned from controller code
    </StudentInfo >
我尝试删除DatContract和DataMember属性,但结果是一样的。我正在使用默认的DataContractSerialization,也尝试了XMLSerialization,但没有任何用处


请告诉我这里缺少什么,以及如何修复。

根本原因是缺少
订单
属性。我已按如下方式更新了您的模型,并按预期对其进行了分析:

[DataContract]
public class StudentInfo
{
    [Key]
    [DataMember(Order = 0)]
    [StringLength(20)]
    public string StudentId { get; set; }

    [Key]
    [DataMember(Order = 1)]
    [StringLength(20)]
    public string FirstName { get; set; }

    [Key]
    [DataMember(Order = 2)]
    [StringLength(20)]
    public string LastName { get; set; }

    [DataMember(Order = 3)]
    [StringLength(20)]
    public string ContactNumber { get; set; }

    [DataMember(Order = 4)]
    [StringLength(20)]
    public string Gender { get; set; }

    [DataMember(Order = 5)]
    [StringLength(20)]
    public string Course { get; set; }

    [DataMember(Order = 6)]
    public DateTime? CreatedDate { get; set; }
}

还考虑在请求中跳过<代码> CreatedDate <代码>,因为您希望服务器填写它。正文应如下所示(不要忘记将

mvcapapplication3.Controllers
替换到命名空间中:

  <StudentInfo xmlns="http://schemas.datacontract.org/2004/07/MvcApplication3.Controllers">
        <StudentId>ST00001</StudentId>
        <FirstName>John</FirstName>
        <LastName>Smith</LastName>
        <ContactNumber>9001236597</ContactNumber>
        <Gender>MALE</Gender>
        <Course>Computer Science</Course>
    </StudentInfo >

ST00001
约翰
史密斯
9001236597
男性
计算机科学

根本原因缺少
Order
属性。我已按如下方式更新了您的模型,并按预期对其进行了分析:

[DataContract]
public class StudentInfo
{
    [Key]
    [DataMember(Order = 0)]
    [StringLength(20)]
    public string StudentId { get; set; }

    [Key]
    [DataMember(Order = 1)]
    [StringLength(20)]
    public string FirstName { get; set; }

    [Key]
    [DataMember(Order = 2)]
    [StringLength(20)]
    public string LastName { get; set; }

    [DataMember(Order = 3)]
    [StringLength(20)]
    public string ContactNumber { get; set; }

    [DataMember(Order = 4)]
    [StringLength(20)]
    public string Gender { get; set; }

    [DataMember(Order = 5)]
    [StringLength(20)]
    public string Course { get; set; }

    [DataMember(Order = 6)]
    public DateTime? CreatedDate { get; set; }
}

还考虑在请求中跳过<代码> CreatedDate <代码>,因为您希望服务器填写它。主体应该看起来像下面的(不要忘记将<代码> MVCpApult3.3控制器< /C> >到您的命名空间:

  <StudentInfo xmlns="http://schemas.datacontract.org/2004/07/MvcApplication3.Controllers">
        <StudentId>ST00001</StudentId>
        <FirstName>John</FirstName>
        <LastName>Smith</LastName>
        <ContactNumber>9001236597</ContactNumber>
        <Gender>MALE</Gender>
        <Course>Computer Science</Course>
    </StudentInfo >

ST00001
约翰
史密斯
9001236597
男性
计算机科学

添加Order属性后代码运行良好。非常感谢…:)添加Order属性后代码运行良好。非常感谢…:)