在MVC应用程序中,我想在外部.js文件中获取ViewBag,ViewData,TempData值。 我不想在view.cshtml中编写脚本,所以我添加了外部js文件。但我无法在该js文件中调用此ViewBag,ViewData,TempData值。
任何人都可以告诉我如何调用这些值而无需在view.cshtml中编写任何js代码
答案 0 :(得分:2)
因为Razor代码在服务器端运行,所以这些值不适用于在客户端运行的Javascript。我知道解决这个问题的唯一方法是在std::intializer_list
文件中声明一些变量并在ChParam
文件中初始化它们。也许不适合你,但我希望它有所帮助。
my.cshtml:
.js
my.js
.cshtml
答案 1 :(得分:1)
如果您想避免使用cshtml中的任何脚本,那么只需将隐藏字段设置为您要传递警报的值即可。 控制器:
TempData["Message"] = "My message text";
查看:
@if(TempData["Message"]) {
<input type="text" id="tempdata" class="hidden"
value="@TempData["Message"]"/>
}
JS:
var tempMessage = document.getElementById('tempdata') ?
document.getElementById('tempdata').value : null;
if(tempMessage) { alert(tempMessage); };