【发布时间】:2015-05-20 17:36:40
【问题描述】:
我正在开发一个 web-api 控制器。我建立了一个 DTO 来保存一个笔记。
public class NoteContainer
{
public long? NoteId { get; set; }
public string Type { get; set; }
public string NoteText { get; set; }
public NoteContainer(Note note, string type = null)
{
NoteId = note.Id;
NoteText = note.NoteText;
Type = type;
}
}
我的控制器中有一个方法:
[HttpPost]
public void EditNote(NoteContainer container)
{
//do work here
}
在从客户端发送 NoteContainer 之前,它具有所有值。当它到达服务器时,类型为空!我不应该使用名为类型的变量吗?为什么我会失去价值?
我使用 Postman 发送这个 json:
{
"noteId": 10,
"type": "person",
"noteText": "loves broccoli",
}
【问题讨论】:
-
显示您发送的 JSON。我的猜测是它有小写的“类型”而不是“类型”。
-
ModelBinder出现问题。您是否在表单组件上手动输入name属性(例如<input type='text' name='propertyName' />) -
试试这个:{ "NoteId": 10, "Type": "person", "NoteText": "loves broccoli", }
-
没有看到您用于发送此请求的 javascript,看起来您正在 js 中创建一个具有 3 个属性的对象,并将其发送到
EditNote(...)-- 这可以看不到类型,因为它没有作为单独的参数发送(note.Type可以工作吗?)。同样,推测,但发布您的客户端代码会有所帮助。 -
js 发送的值与邮递员发送的完全相同。大写也不重要
标签: javascript c# asp.net-web-api