我正在尝试从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 =""
以下是Controller,它返回一个Partial,呈现为jquery对话框:
public ActionResult openDialog()
{
ViewBag.id = TempData["id"];
return PartialView("EndLoadDetailsDialog");
}
更新 我想起来,我可能已经找到了问题。如果我是对的,请告诉我:
我定义viewbag值的控制器返回一个局部视图,这是最后一个返回的视图。
此部分视图呈现给JQuery对话框。关闭它之后,我返回之前的一个,其中包含一个表单。在表单视图(最后一个之前的那个)中,我试图通过JS函数访问viewbag值,并将其分配给表单中的隐藏字段。实际上,我正在尝试获取viewbag值,而不是从我发送viewbag的视图中获取。
这是一个问题吗? viewbag值是否仅在已渲染的最后一个视图中可用?