Saya cukup bingung dengan cara mencampur pisau cukur dan js. Ini adalah fungsi saat ini saya terjebak dengan:
<script type="text/javascript">
var data = [];
@foreach (var r in Model.rows)
{
data.push([ @r.UnixTime * 1000, @r.Value ]);
}
Jika saya bisa mendeklarasikan kode c # dengan <c#></c#>
dan yang lainnya adalah kode JS - inilah yang saya cari:
<script type="text/javascript">
var data = [];
<c#>@foreach (var r in Model.rows) {</c#>
data.push([ <c#>@r.UnixTime</c#> * 1000, <c#>@r.Value</c#> ]);
<c#>}</c#>
Apa metode terbaik untuk mencapai ini?
c#
javascript
razor
Kyle Brandt
sumber
sumber
<c#>
tag saya juga :-PConditional Compilation
jadi saya tidak bisa melihat HTML - jadi saya yakin ini bagian dari kode C #.Jawaban:
Gunakan
<text>
:sumber
Scripts.Render
, lalu panggil fungsi dalam<script>
tag. Tidak sepenuhnya anggun, tetapi berfungsi untuk sebagian besar (baca: sederhana) kasus penggunaan.Di dalam blok kode (misalnya,
@foreach
), Anda harus menandai markup (atau, dalam hal ini, Javascript) dengan@:
atau<text>
tag .Di dalam konteks markup, Anda perlu mengelilingi kode dengan blok kode (
@{ ... }
atau@if
, ...)sumber
@:
adalah apa yang saya cari, bagus!Anda juga bisa menggunakan
note @:
sumber
Jangan pernah mencampur lebih banyak bahasa.
Jika ada masalah, Anda juga dapat mencoba
sumber
Uncaught SyntaxError: Unexpected token &
karena modelnya menjadi seperti ini[{"Id":1,"Name":"Name}]
Metode non konvensional untuk memisahkan javascript dari tampilan, tetapi tetap menggunakan pisau cukur di dalamnya adalah untuk membuat
Scripts.cshtml
file dan menempatkan javascript / pisau cukur campuran Anda di sana.Index.cshtml
Scripts.cshtml
sumber
Anda dapat menggunakan
<text>
tag untuk kedua kode cshtml dengan javascriptsumber
Bungkus kode Razor Anda di @ {} ketika di dalam skrip JS dan berhati-hatilah dengan hanya menggunakan @ Kadang-kadang itu tidak berhasil:
Ini akan menghasilkan
di browser = (
sumber