2016-09-22 90 views
1

在MVC應用程序,我想在外部.js文件ViewBag,ViewData的,TempData的值。 我不想在view.cshtml中編寫腳本,所以我添加了外部js文件。但我無法在該js文件中調用此ViewBag,ViewData,TempData值。呼叫ViewBag,ViewData的,TempData的外部JS文件

誰能告訴我如何調用這些值,而不寫入view.cshtml

+0

你必須寫的js代碼ATLEAST一行讀取該值,並將其分配給一個js變量,你外部js可以使用 – Shyju

回答

2

由於剃刀代碼在服務器端運行的任何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 
    ... 
} 
+2

只是想指出,你應該總是*命名空間你的JavaScript變量,特別是在像這樣在全局範圍內聲明時。 –

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