我有一个发送此数据的客户端:
{"answers":[
{"response":true},
{"response":true},
{"response":true},
{"response":false},
{"response":false}]}
我有这样的课程:
public class AnswerRow
{
public bool? Correct { get; set; }
public bool Response { get; set; }
}
public class AnswerRowList
{
public IList<AnswerRow> Answers { get; set; }
}
在我的WebAPI中,我收到如下数据:
[HttpPut]
[Route("MarkQuestion/{testQuestionId}/{questionUId:Guid}")]
[ValidateModel]
public async Task<IHttpActionResult> MarkQuestion(string testQuestionId, Guid questionUId, [FromBody]AnswerRowList answer)
{
var createdBy = User.Identity.GetUserId();
DataTable answers = new DataTable();
answers.Columns.Add("Response", typeof(????));
foreach (AnswerRow a in answer.Answers)
{
answers.Rows.Add(a.Response);
}
我认为我的所有代码都没问题,除了我不知道如何将一个列添加到接受布尔值的DataTable中。我尝试了BIT和Bit和bit,但它在VS2013中显示了这些类型的语法错误。
答案 0 :(得分:0)
我会尝试使用变量TinyInt而不是布尔值。这是一个单字节数据类型,您可以使用它来输入值1或0(如果您愿意),分别表示true和false。可能还有其他方法,但这就是我在表格中使用的方法。
Here's an MSDN article that explains some of the data types.
修改强> 对不起,但我不知道上次我是如何使用TinyInt的。我建议您将类型更改为INT,并且按照惯例仅使用值1或0.因此您可以在此处获取代码:
answers.Columns.Add("Response", typeof(????));
foreach (AnswerRow a in answer.Answers)
{
answers.Rows.Add(a.Response);
}
并成功:
answers.Columns.Add("Response", typeof(int));
foreach(AnswerRow a in answer.Answers)
{
if(a.Response) // Here I'm trying to check if a.Response is true
answers.Rows.Add(1);
else
answers.Rows.Add(0);
}
我目前没有机会对此进行测试,所以请告诉我这是否至少指向了正确的方向。