MVC を使用する asp.net レポートをリファクタリング中です。レポートの条件の一部を削除し (不要になりました)、新しい条件をいくつか追加しましたが、レポートがまったく生成されません。送信ボタンをクリックすると、単純に戻ります。
そのため、少なくともそこに到達していることを確認するためのサニティ チェックとして、いくつかの console.log ステートメントをコードに追加しました。
$("#submit_button").click(function () {
console.log("submit btn clicked");
$("#NumberOfResults").css("visibility", "visible");
$("#NumberOfResults").html("Please wait...");
EnableButton("submit_button", false);
var deptsList = $('#depts').checkedBoxes();
$('#deptHeader span').html(deptsList.join(", "));
var sitesList = $('#sites').checkedBoxes();
$('#sitesHeader span').html(sitesList.join(", "));
$('#hiddenDepts').val(deptsList); //do I need to make this: $('#hiddenDepts').val(deptsList).join(","); ?
$('#hiddenSites').val(sitesList); // ""
var UPCs = $('UPC').val();
if (UPCs == "All") {
$('UPC').val("1"); // take everything (1 and greater)
}
console.log("about to submit the form");
$("form").submit();
});
渡されるすべての値が有効であるとは限らない (modelState にエラーが含まれている) ため、おそらく失敗していると思いましたが、$("form").submit(); への呼び出しの後に、さらなる処理に対する反対意見が出てくるのではないでしょうか。?
IOW、送信ボタンを押してから F12 キーを押した後、コンソールに「送信ボタンがクリックされました」と「フォームを送信しようとしています」が表示されると思いますが、そうではありません...
5 つのモデル メンバーのうち 3 つが空の文字列であることは事実です。そのため、さらに問題を突き止める必要がありますが、これらのコンソール ログ メッセージさえ表示されないのはなぜですか?
アップデート
ここの最後の行のコントローラーにブレークポイントがあります。
[HttpPost]
public ActionResult ReceiptCriteria(TLDSalesReceiptCriteriaModel model)
{
ViewBag.DebugMessage = "No error";
if (ModelState.IsValid) // inspect locals.modelstate [breakpoint set here]
…なのに届かない…?!?!?
更新 2
Karl Anderson への回答として、関連する HTML を次に示します。
<button type="submit" id="submit_button" class="bottomButtonEnabled">View Report</button>
更新 3
コンソール メッセージをテキストとして取得する方法がある場合、方法がわからなかったので、悲鳴のショットをキャプチャしました。
あなたの目が小さすぎて読むことができない場合、いわば(私の目はそうです)、言葉遣いの一部を以下に示します。
shouldShowTB ファイルが存在しません - デフォルト アクション show Toolbar > DOMException chrom.tabs is not available: この API にアクセスする権限がありません。確認してください.... リソースの読み込みに失敗しました: サーバーは 404 (見つかりません) のステータスで応答しました ...sprite.png リソースの読み込みに失敗しました: サーバーは 400 のステータスで応答しました (Bad Request) リソースの読み込みに失敗しましたchrome-extension://klibjjljfadl;fjkdlfjkdl;;fjdlfjadl/tb/al/state.html MessagingReadyWrapper の準備ができていません。名前:abstractionLayerBack.js、場所....プラグインを待っているタイムアウト、プラグインなしで準備完了を呼び出す...
更新 4
Aegisが言ったことを、送信ボタン自体または次のいずれかで実行しました。
form action="/mypath/mycshtml" method="post"
...右クリックして「要素の検査」を選択すると、CDT で強調表示され、右ペインの下部に次のように表示されます。
フォームを送信してください...そして、たくさんの「gobbledygook」(私には奇妙です; おそらくAegisはそれを理解しています)
参照されるファイルは jquery.js:6497 です。その下には、jquery に関する一連の情報が表示されます (sourcename の値は、Google の CDN jQuery ファイルへのパスです)。代わりに、submit_button クリック ハンドラーを指す必要がありますか?
更新 5
たぶん、私の問題の少なくとも一部は、「form」.submit を明示的に呼び出していたことでした。これは、送信ボタンでは必要ないはずです-それをマッシュすると、フォームが自動的に送信されますよね? それをコメントアウトした後(document.form.submit()の生のjavascriptを試した後)、少なくとも最初に追加したconsole.logメッセージ(「submit btn clicked」)がコンソールに表示されます。そのため、そこと 2 番目の console.log メッセージ (コンソールに書き込まれていない) の間のどこかで、何かが失敗しています。