在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
...
}