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



在MVC应用程序中,我想在外部.js文件中获得ViewBag, ViewData, TempData值。我不想在视图中编写脚本。cshtml,所以我添加外部js文件到它。但是我无法在js文件中调用这个ViewBag, ViewData, TempData值。

谁能告诉我如何调用这些值而不写任何js代码在视图。cshtml

如果您想避免在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); };

因为Razor代码运行在服务器端,这些值对于运行在客户端的Javascript是不可用的。我知道的唯一方法是在你的.js文件中声明一些变量,并在你的.cshtml文件中初始化它们。也许对你来说不太理想,但我希望它能帮到你。

my.cshtml:

...
<script type="text/javascript">
   myVar = @(ViewBag.myVar);  // etc.
</script>
...

my.js

var myVar = null;
function myFunc() {
   // Check for initialization
   if (myVar == null)
      alert("myVar not initialized!");
   ...
   // use myVar
   ...
}

相关内容

最新更新