アプリケーションでいくつかの例外処理クラスとコードをテストしながら、Fiddler でいくつかの Ajax リクエストを見ているだけですが、リクエストが適切に形成されているかどうかはわかりません。
私のJavascriptは:
$(function () {
$('#createentry').submit(function () {
e.preventDefault();
$.ajax({
url: this.action,
type: this.method,
dataType: "json",
data: $(this).serialize(),
success: function(result) {
$('#entries-list').append("<li>" + $('#newentry').val() + "</li>");
$('#newentry').val('').blur();
},
error: function (xhr)
{
try
{
var json = $.parseJSON(xhr.responseText);
alert(json.errorMessage);
}
catch (e)
{
alert('something bad happened');
}
}
});
return false;
});
});
Fiddler では、リクエストは次のようになります。
Host: localhost:54275
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://localhost:54275/Diary
Cookie: __RequestVerificationToken= <snipped for brevity>
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 216
Accept: ヘッダーが自動的に json に設定されることを期待しますが、これは間違った仮定だと思います。これはどのように設定されていますか?
また、アクション メソッドでこの結果を見ると、値は常に false です。
[HttpPost, ValidateAntiForgeryToken, JsonExceptionFilter]
public JsonResult PostNewEntry(DiaryEntryViewModel diaryEntry)
{
var req = Request.IsAjaxRequest();
req always = false であるため、私の JsonExceptionFilter が開始されず、エラー報告が期待どおりに処理されません。
MVCでAjaxリクエストとして正しく設定されたリクエストのみを強制的に受け入れる定義された方法もありますか?