Saya memiliki fungsi jQuery dalam pandangan saya.

Dan variabel dalam model tampilan saya:

public bool pageChanged { get; set; }

Fungsi:

$(document).ready(function () {
    if (@Model.pageChanged == true) {
        $('html, body').animate({
                scrollTop: $("#picture_section").offset().top
        }, 2000);
    }
});

Tanpa pernyataan if berfungsi dengan baik. Tetapi jika saya ingin membandingkan nilai bool model saya, itu tidak berhasil. Saya mencoba alert("@Model.pageChanged") dan itu menunjukkan nilai yang benar.

Jadi saya mencoba

if(@Model.pageChanged) {
}

if(@Model.pageChanged == true) {
}

Tapi itu tidak berhasil. Bagaimana saya bisa mengubah pernyataan if agar berfungsi? Apakah ada masalah dengan tipe?

Terima kasih telah menyelesaikan masalah.

2
Michal Fiala 25 Agustus 2017, 15:49

2 jawaban

Jawaban Terbaik

Jadi ada batasan antara klien dan server yang berpotensi dimainkan. Kode model dalam tampilan, dalam konteks yang Anda miliki, pada dasarnya menentukan apa yang dirender ke tampilan. Jadi jika Anda memiliki ini:

if (@Model.pageChanged == true) {

Kode sisi server merender nilai pageChanged ke klien, kecuali saya menemukan ada masalah dengan rendering yang salah. Solusi umum adalah:

if (@Model.pageChanged.ToString().ToLower() == true) {

Yang akan membuat:

if (true == true) {

ATAU

if (false == true) {

Jadi, Anda tidak perlu bagian "== true".

Jika Anda ingin mengontrol apa yang sebenarnya diberikan JS, Anda dapat melakukan:

$(document).ready(function () {
    @if (Model.pageChanged == true) {
        <text>
         $('html, body').animate({
            scrollTop: $("#picture_section").offset().top
         }, 2000);
        </text>
    }
});

Teks ini:

@if (Model.pageChanged == true) {

Menjadi evaluasi sisi server dan menentukan apakah peristiwa pernyataan bernyawa jQuery dirender sama sekali, berdasarkan nilai pageChanged.

3
Brian Mains 25 Agustus 2017, 12:57

Atau Anda bisa melakukan sesuatu seperti ini:

if ("@Model.pageChanged" == "True") {...}

Berikut ini tautan untuk menjelaskan mengapa "Benar" tidak "benar": Mengapa Boolean.ToString menghasilkan "True" dan bukan "true"

0
oopsdazie 25 Agustus 2017, 13:15