3

送信する前に、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 関数を介してビューバッグの値にアクセスし、それをフォームの非表示フィールドに割り当てようとしています。したがって、実際には、ビューバッグを送信したビューからではなく、ビューバッグの値を取得しようとしています。

それって問題ですか?ビューバッグの値は、レンダリングされた最後のビューからのみ利用できますか?

4

0 に答える 0