在HTML for MVC3 Razor项目中访问ViewData的问题

时间:2011-08-09 23:17:24

标签: asp.net-mvc-3 jquery-plugins

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。我怎样才能完成这个简单的壮举?

1 个答案:

答案 0 :(得分:1)

您正在呼叫RedirectToAction。这样可以返回302 http状态代码,指向索引控制器上Home动作的URL。

此时,您将丢失ViewData中的所有内容。您需要将值作为URL的一部分传递,例如通过查询字符串:

return RedirectToAction("Index", "Home", new { ErrCode = 3 });

更新:您还可以使用TempData代替ViewData。这是一个将数据保留到下一个请求(以及下一个请求)的集合。