Javascript 在外部js文件中调用ViewBag、ViewData、TempData
在MVC应用程序中,我想在外部.js文件中获取ViewBag、ViewData、TempData值。 我不想在view.cshtml中编写脚本,所以我在其中添加了外部js文件。但我无法在该js文件中调用此ViewBag、ViewData和TempData值Javascript 在外部js文件中调用ViewBag、ViewData、TempData,javascript,asp.net-mvc,Javascript,Asp.net Mvc,在MVC应用程序中,我想在外部.js文件中获取ViewBag、ViewData、TempData值。 我不想在view.cshtml中编写脚本,所以我在其中添加了外部js文件。但我无法在该js文件中调用此ViewBag、ViewData和TempData值 有人能告诉我如何调用这些值而不在view.cshtml中编写任何js代码吗?因为Razor代码在服务器端运行,这些值对于在客户端运行的Javascript不可用。我知道解决这个问题的唯一方法是在.js文件中声明一些变量,并在.cshtml文件
有人能告诉我如何调用这些值而不在view.cshtml中编写任何js代码吗?因为Razor代码在服务器端运行,这些值对于在客户端运行的Javascript不可用。我知道解决这个问题的唯一方法是在.js文件中声明一些变量,并在.cshtml文件中初始化它们。也许对你来说不太理想,但我希望它能帮助你 my.cshtml:
...
<script type="text/javascript">
myVar = @(ViewBag.myVar); // etc.
</script>
...
如果要避免在cshtml中编写脚本,只需将隐藏字段设置为要传递警报的值。 控制器:
TempData["Message"] = "My message text";
视图:
我想指出的是,您应该始终为JavaScript变量命名名称空间,尤其是在这样的全局范围内声明时。您必须至少编写一行js代码来读取该值,并将其分配给外部js可以使用的js变量
TempData["Message"] = "My message text";
@if(TempData["Message"]) {
<input type="text" id="tempdata" class="hidden"
value="@TempData["Message"]"/>
}
var tempMessage = document.getElementById('tempdata') ?
document.getElementById('tempdata').value : null;
if(tempMessage) { alert(tempMessage); };