在MVC应用程序,我想在外部.js文件ViewBag,ViewData的,TempData的值。 我不想在view.cshtml中编写脚本,所以我添加了外部js文件。但我无法在该js文件中调用此ViewBag,ViewData,TempData值。呼叫ViewBag,ViewData的,TempData的外部JS文件
谁能告诉我如何调用这些值,而不写入view.cshtml
在MVC应用程序,我想在外部.js文件ViewBag,ViewData的,TempData的值。 我不想在view.cshtml中编写脚本,所以我添加了外部js文件。但我无法在该js文件中调用此ViewBag,ViewData,TempData值。呼叫ViewBag,ViewData的,TempData的外部JS文件
谁能告诉我如何调用这些值,而不写入view.cshtml
由于剃刀代码在服务器端运行的任何js代码,这些值不可用于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
...
}
只是想指出,你应该总是*命名空间你的JavaScript变量,特别是在像这样在全局范围内声明时。 –
要传递警报。 控制器:
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); };
你必须写的js代码ATLEAST一行读取该值,并将其分配给一个js变量,你外部js可以使用 – Shyju