JavaScript的 我将值“3”从Controller传递给ViewData变量,以便通过HTML显示。
我已经在返回ActionResult之前验证过,值“3”在变量中(参见下面的代码):
public ActionResult Index()
.
.
.
ViewData["ErrCode"] = "3";
return RedirectToAction("Index", "Home");
但是,字符串在渲染时始终呈现为空字符串(见下文):
$().customAlert();
$(document).ready(function () {
'' = "3";
var strErrCode = '';
alert('Hello!');
});
以上呈现的代码来自_Layout.cshtml共享视图文件的标记中的以下代码。请注意,我甚至将值“3”强制转换为“ErrCode”变量,并且脚本如上所示呈现。
$().customAlert();
$(document).ready(function () {
'@ViewData["ErrCode"]' = "3";
var strErrCode = '@ViewData["ErrCode"]';
alert('Hello!');
});
我必须在js中错误地使用ViewData。我怎样才能完成这个简单的壮举?
答案 0 :(得分:1)
您正在呼叫RedirectToAction
。这样可以返回302 http状态代码,指向索引控制器上Home动作的URL。
此时,您将丢失ViewData中的所有内容。您需要将值作为URL的一部分传递,例如通过查询字符串:
return RedirectToAction("Index", "Home", new { ErrCode = 3 });
更新:您还可以使用TempData
代替ViewData
。这是一个将数据保留到下一个请求(以及下一个请求)的集合。