我正在尝试从 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 值是否只能从已渲染的最后一个视图中获得?