これは一種の奇妙な質問ですが、私は非常に奇妙な状況に陥っています。私の開発サーバー (IIS & IIS Express) で ajax リクエストを行い、フォームを返します。次に、ユーザーは ajax ポストを介してフォームをポストし、検証エラーがある場合、コントローラーは応答コード 400 で部分ビューを返します。私の ajax メソッドでは、400 エラーをインターセプトし、検証エラーのあるフォームを再表示します。
私の問題は、アプリを実稼働サーバーにアップロードすると、検証エラーが表示され、部分ビューのない 400 応答だけになることです。どこから始めればいいのかわからない?これが私が試したこと、使用しているライブラリ、およびいくつかのサンプルコードです。
ASP.net MVC4、流暢な検証、jQuery、目立たない検証、malsup-ajaxsubmit
私の本番サーバーでは...
- フォームをロードする部分ビューは期待どおりに機能します。これは、検証が失敗した場合に同じビューが再表示されるため、アプリケーションがビューを見つけるのに問題がないことを示しています。
- 流暢な検証を使用しているコントローラーは、モデル状態エラーを正しく検出し、400 で応答しています (ビューが表示されないだけです)。
- ajaxsubmit を使用した ajax 投稿は、ajax を使用して正しくサーバーに投稿しています。
- firebug を使用して ajax メソッドを実行すると、実際には 400 エラーが返されますが、xhr.responseText のコンテンツは「Bad Request」だけです。部分的なビューはありません。ここでも、私の開発マシンは完璧に動作します。
ここにいくつかのコードがあります。
私のフォーム取得リクエスト:
public ActionResult CreateMedicalEvent(int userId)
{
var model = new EventModel { MedicalEventUserId = userId };
return PartialView("_Event.Create", model);
}
私のフォーム投稿:
[HttpPost]
public ActionResult CreateMedicalEvent(EventModel model)
{
if (!ModelState.IsValid)
{
Response.StatusCode = 400;
return PartialView("_Event.Create", model);//this does not get returned on production server
}
//the rest of my code if validation passess
}
私のajaxメソッド:
$('.se-form').ajaxForm({
delegation: true,
beforeSubmit: function() {
ajaxHelpers.modalProcess();//modal progress bar
},
success: function(data) {
$.modal.close();
//handle a successful post
},
error: function(xhr) {
$.modal.close();
if (xhr.status == 400) {
slideEdit.seObj.empty();//this is my form object
slideEdit.seObj.append(xhr.responseText);//all I get is "Bad Request" from production server
$.validator.unobtrusive.parse($('form', slideEdit.seObj));
ajaxHelpers.bindDates(); //because we need to bind event AND format date, we have to do this here
utilities.formatDecimal();
} else {
ajaxHelpers.exc(xhr);
}
}
});
投稿するコードがもっとあればいいのにと思いますが、それほど複雑ではありません。運用サーバーに奇妙な dll ファイルがありませんか? どちらのサーバーにも MVC4 がインストールされています。失った。助けてください。ありがとう。