jQuery
を使用し、POST
メソッドでデータを送信します。しかし、サーバーメソッドでは、値は表示されません。エラーは何でしょうか?
クライアント
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "./AddTag",
dataType: "json",
data: "{'parentId':42,'tagName':'isTagName'}",
success: function (response) {
// ...
}
});
サーバー
[HttpPost]
public JObject AddTag(int parentId, string tagName)
{
dynamic answer = new JObject();
List<LogRecord> logs = new List<LogRecord>();
answer.added = fStorage.Tags.AddTag(parentId, tagName, logs);
return answer;
}
固定どうもありがとうございました。私は間違いを理解しました。私はこれのためにクライアントとサーバーのコードを修正しました:
let tag = {
"Id": 0,
"ParentId": 42,
"Name": isTagName
};
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "./AddTag",
dataType: "json",
data: JSON.stringify(tag),
success: function (response) {
// ...
}
});
サーバー
[HttpPost]
public JObject AddTag([FromBody] Tag tag)
{
dynamic answer = new JObject();
List<LogRecord> logs = new List<LogRecord>();
answer.added = fStorage.Tags.AddTag(tag.ParentId, tag.Name, logs);
answer.logs = Json(logs);
return answer;
}
クラスが追加されました
public class Tag
{
public int Id { get; set; }
public int ParentId { get; set; }
public string Name { get; set; }
public List<Tag> ChildsList { get; set; }
[NonSerialized]
public Tag ParrentTag;
}
パラメータを別のDTOクラスに抽出してみてください:
public class ParentDTO
{
public int parentId{get; set;}
public string tagName{ get; set;}
}
[HttpPost]
public JObject AddTag([FromBody] ParentDTO parent)
{
}
使用する [FromBody]
パラメータの前。それはチェックして、本文のプロパティ値を取得します。それ以外の場合は、URLクエリ文字列をチェックします。
例:
[HttpPost]
public JObject AddTag([FromBody] int parentid,[FromBody]string tagname)
{
}
[HttpPost]
public JObject AddTag([FromBody] {ModelName} parent)
{
}