送信する前に、ViewBag からデータを取り出し、JS を介してフォームの非表示フィールドに挿入しようとしています。
うまくいきません。
デバッグ中に、JS 式の一部が無視されていることがわかりました。その結果、「var」が空の文字列に評価されます。
割り当てを行うはずのJS部分は次のとおりです。
function setid() {
var id = '@(ViewBag.id)';
$('#idField').val(id);
};
デバッグでは、次の式を取得します。これはもちろん、null 'id' につながります。
function setid() {
var id = '';
$('#idField').val(id);
};
(それが唯一の障害であるかどうかはわかりません)
この JS 関数は、同じページの「Ajax.BeginForm」の「OnBegin」引数によって呼び出されています。
これは、フォーム内に存在する html 隠しフィールドで、「id」値を割り当てようとしています。
input type ="hidden" name ="id" id ="idField" value =""
以下は、jquery ダイアログとしてレンダリングされる Partial を返す Controller です。
public ActionResult openDialog()
{
ViewBag.id = TempData["id"];
return PartialView("EndLoadDetailsDialog");
}
更新: 考えてみると、問題が見つかった可能性があります。私が正しいかどうか教えてください:
ビューバッグの値を定義するコントローラーは、返される最後のビューである部分ビューを返します。
この部分的なビューは、JQuery ダイアログにレンダリングされます。閉じた後、フォームを含む前のフォームに戻ります。フォーム ビュー (最後のビューの前のもの) で、JS 関数を介してビューバッグの値にアクセスし、それをフォームの非表示フィールドに割り当てようとしています。したがって、実際には、ビューバッグを送信したビューからではなく、ビューバッグの値を取得しようとしています。
それって問題ですか?ビューバッグの値は、レンダリングされた最後のビューからのみ利用できますか?