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 对话框:

public ActionResult openDialog()
    {
        ViewBag.id = TempData["id"];
        return PartialView("EndLoadDetailsDialog");
    }

更新: 当我想到它时,我可能已经发现了问题。如果我是对的,请告诉我:

我在其中定义 viewbag 值的控制器返回一个局部视图,这是返回的最后一个视图。

这个局部视图被呈现给一个 JQuery 对话框。关闭它后,我返回到之前的那个,其中包含一个表格。在表单视图(最后一个之前的那个)中,我试图通过 JS 函数访问 viewbag 值,并将其分配给表单中的隐藏字段。所以实际上,我正在尝试获取 viewbag 值,而不是从我发送 viewbag 的视图中获取。

这是个问题吗?viewbag 值是否只能从已渲染的最后一个视图中获得?

4

0 回答 0