使用Jquery在ViewBag中设置值

前端之家收集整理的这篇文章主要介绍了使用Jquery在ViewBag中设置值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我只想问一下,有没有办法使用 jquery动态设置viewbag值?
我在我的脚本中尝试这个代码,
$(".btn").on("click",function(){
@ViewBag.Id = $(this).attr("id")
});

我不知道如果它的正确,但是当我尝试运行我的MVC 3项目,这个错误出现在我的firebug

Syntax Error
    = $(this).attr("id")

请帮忙.谢谢

解决方法

你误会了ViewBag的工作原理.

当在MVC工作,并且你打开一个网页,这是(粗略地)发生:

>运行FooController的方法“索引”.最后,返回一个视图.
>您的MVC应用程序将为您找到视图,并根据在相关的.aspx文件中找到的HTML开始呈现.如果程序遇到诸如“@ ViewBag.Id”这样的项目,它将基本上用任何“.Id”值来替换字符串. (这比这更复杂一点,但为了论证,它基本上是一个字符串替换).
>渲染后,HTML文档将发送到您的浏览器,然后显示它.

当您的浏览器访问页面时,您的ViewBag基本上已经超出了范围.这是因为您的ASP(MVC)应用程序使用ViewBag,但是Javascript只在Web浏览器文档中有一个范围(这是在ViewBag超出范围之后应用程序返回给浏览器的HTML代码. Javascript不是MVC应用程序的一部分,只是生成的网页.

所以简短的答案是,不,你不能这样做.尝试将其视为进行内置字符串替换.
您只能将ViewBag值放入HTML页面,而不是其他方式.

假设你的Id是5,aspx文件中的以下代码

$(".btn").on("click",function(){
    @ViewBag.Id = $(this).attr("id")
});

将被发送到浏览器

$(".btn").on("click",function(){
    5 = $(this).attr("id")
});

由于您的浏览器只能看到最后一部分,所以在Javascript中没有任何意义.在你的情况下,使用语法错误,它只是意味着你的变量还没有被初始化,你正在尝试访问一个null.

猜你在找的jQuery相关文章