MVCアプリケーションでは、外部の.jsファイルにViewBag、ViewData、TempDataの値を取得します。 私はview.cshtmlでスクリプトを書く必要がないので、外部のjsファイルを追加しました。しかし、私はこのjsファイルでこのViewBag、ViewData、TempDataの値を呼び出すことができません。外部のjsファイルのViewBag、ViewData、TempDataを呼び出します。
誰がどのようにview.cshtml
MVCアプリケーションでは、外部の.jsファイルにViewBag、ViewData、TempDataの値を取得します。 私はview.cshtmlでスクリプトを書く必要がないので、外部のjsファイルを追加しました。しかし、私はこのjsファイルでこのViewBag、ViewData、TempDataの値を呼び出すことができません。外部のjsファイルのViewBag、ViewData、TempDataを呼び出します。
誰がどのように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変数を常に*ネームスペースにする必要があることを指摘しておきます。 –
あなたが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); };
あなたが値を読んでいるあなたのjsの変数に代入するために、JSコードの少なくとも1つの行を記述する必要があり外部のjsは – Shyju