我只是想问,有没有办法使用jquery动态设置viewbag值?
我在我的脚本中尝试这段代码,
$(".btn").on("click",function(){
@ViewBag.Id = $(this).attr("id")
});
我不知道它是否正确,但是当我尝试运行我的 MVC 3 项目时,此错误出现在我的萤火虫中
Syntax Error
= $(this).attr("id")
请帮忙。谢谢
您误解了 ViewBag 的工作原理。
在 MVC 中工作时,打开一个网页,(大致)会发生以下情况:
- FooController 的“Index”方法被运行。最后返回一个View。
- 然后,您的 MVC 应用程序将为您找到视图,并根据在相关 .aspx 文件中找到的 HTML 开始呈现它。如果程序遇到诸如“@ViewBag.Id”之类的项目,它基本上会用“.Id”值进行字符串替换。 (它比这更复杂一些,但为了论证,它基本上进行了字符串替换)。
- 渲染后,HTML 文档将发送到您的浏览器,然后浏览器将显示它。
当您的浏览器获取该页面时,您的 ViewBag 基本上已经“超出范围”了。这是因为您的 ASP (MVC) 应用程序使用 ViewBag,但 Javascript 仅在 Web 浏览器文档中具有作用域(这是返回到浏览器的 HTML 代码)by应用程序,afterViewBag 超出了范围。 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
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)