在外部js文件中调用ViewBag,ViewData,TempData

时间:2016-09-22 13:40:26

标签: javascript asp.net-mvc

在MVC应用程序中,我想在外部.js文件中获取ViewBag,ViewData,TempData值。 我不想在view.cshtml中编写脚本,所以我添加了外部js文件。但我无法在该js文件中调用此ViewBag,ViewData,TempData值。

任何人都可以告诉我如何调用这些值而无需在view.cshtml中编写任何js代码

2 个答案:

答案 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); };