0
私はSavesController(Web APIコントローラー)にSaveメソッドを持っています。私は郵便配達員とそれをテストしたとき、それはこれを返しました。郵便配達員がなぜ「非静的メソッドはターゲットが必要です」を返すのですか?
{
"message": "An error has occurred.",
"exceptionMessage": "Non-static method requires a target.",
"exceptionType": "System.Reflection.TargetException",
"stackTrace": " at System.Web.Http.ApiController. <InvokeActionWithExceptionFilters>d__1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__0.MoveNext()"
}
保存方法はこちらです。 internet.Iを通じて私が検索しました声明
[HttpPost]
public IHttpActionResult Save(SavesDto dto)
{
var userId = User.Identity.GetUserId();
if (_context.SavedPosts.Any(a => a.AttendeeId == userId && a.PostId == dto.PostId))
return BadRequest("The save already exists.");
var savedPost = new Saves
{
PostId = dto.PostId,
AttendeeId = userId
};
_context.SavedPosts.Add(savedPost);
_context.SaveChanges();
return Ok();
}
場合は例外がスローされた時に問題がLINQの中にNULL値を使用してから来ていることが分かりました。しかし、Linq文のどのメソッドもtrue/falseを返すだけですが、なぜこの例外がスローされますか?
public class SavesDto
{
public int PostId { get; set; }
}
私は
@foreach(var post in Model)
{
<button
data-post-id="@post.Id"
class="btn btn-default btn-sm pull-right .js-toggle-save">Save ?</button
}
@section scripts
{
<script>
$(document).ready(function()
{
$(".js-toggle-save").click(function(e)
{
var button = $(e.target);
$.post("/api/saves", { postId: button.attr("data-post-id") })
.done(function()
{
button.removeClass("btn-default")
.addClass("btn-info").text("Saved");
})
.fail(function()
{
alert("something failed");
})
});
}
);
</script>
}
ここAPIを呼び出しますがnullのラムダ式で変数を使用する場合PostIdとAttendeeIdが
public class Saves
{
public ApplicationUser User { get; set; }
public Post Post { get; set; }
[Key]
[Column(Order = 1)]
public int PostId { get; set; }
[Key]
[Column(Order = 2)]
public string AttendeeId { get; set; }
}
はいdtoオブジェクトがnullです。現在、Null参照例外が次の行にスローされています。なぜ私はスクリプトと感謝のpostIdを渡しているので、dtoオブジェクトがnullである任意のアイデア。 – savvy
コントローラ内のメソッドは、dtoオブジェクトのインスタンスを作成してPostId値を設定していません。あなたが受け入れた場合:int PostID、dtoオブジェクトの代わりに、私はそれが動作すると期待しています。 – Rono