SWFUpload を使用してファイルをアップロードしています。ファイルと一緒に渡す必要があるデータを取得するために、post パラメータを swfupload に追加しています。問題は、コントローラ メソッドが swfupload によって呼び出されたときに、私が作成したカスタム モデル バインダーが呼び出されないことです。モデルの一部のプロパティは設定されていますが、カスタム バインダーによって制御されているプロパティは設定されていません。これは、既定のモデル バインダーを使用していることを意味します。
次の JQuery メソッドを使用すると、すべてが意図したとおりに機能します。したがって、問題は、カスタム モデル バインダーが正しく設定されていないことではありません。
$.post('AsyncUpload', $('#uploadform').serialize());
以下は、投稿パラメーターを設定してアップロード プロセスを開始するために使用しているコードです。私はsetPostParams関数を認識していますが、何らかの理由で機能していなかったため、回避策であることに注意してください。また、サーバー側の Request 変数で post パラメータが正しく設定されていることを確認したことにも注意してください。
$('#uploadbutton').click(function (e) {
e.preventDefault();
var data = $('#uploadform').serialize();
var res = $.parseQuery(data);
for (key in res) {
swfu.addPostParam(key, res[key]);
}
swfu.startUpload();
});
関連する swfupload 変数は次のように設定されます。
upload_url: '<%= Url.Action("AsyncUpload")%>', //This becomes /Home/AsyncUpload
use_query_string: true, // I have also tried setting this to false to no effect
これは私のコントローラーメソッドです。
[HttpPost]
public bool AsyncUpload(EditModel model)
{
if (Request.Files.Count <= 0)
return false;
return true;
}
カスタム モデル バインダーが呼び出されない理由はありますか?