簡體   English   中英

將值從ViewModel傳遞到JavaScript

[英]Passing values from ViewModel to JavaScript

我正在制作MVC 5 Web應用程序,並且希望將ViewModel的值傳遞給JavaScript中的函數

目的是當用戶選擇選項“否”時隱藏標簽/分隔,並在用戶將選項更改回“是”時使其重新出現。

這是我到目前為止的內容:

視圖模型:

public enum BasicAnswer
        {
            [Display(Name= "Yes")]
            Yes,
            [Display(Name= "No")]
            No
        }
 public BasicAnswer userDiscomfortResponse { get; set; }

視圖:

   <div id="UserDiscomfortAnswerLabel">
            <label id="somelabel">Did you have any discomfort with an exercise?</label>
            <div class="Answer1" onclick=feedback data-id='@Model.userDiscomfortResponse'>
                @Html.EnumDropDownListFor(m => m.userDiscomfortResponse, new { @class = "form-control" })
        </div>
    </div>

    <div class="Question2">
        <label id="UserDiscomfortExerciseLabel">What exercise was the issue?</label> 
        <div class="Answer2">
            @Html.DropDownListFor(m => m.discomfortExercise, Model.UsersSelectedExcerises, new { @class = "form-control" })
        </div>
    </div>

JavaScript的:

function feedback() {
    var feedback = $(this).attr('data-id'); 
    if (feedback == "Yes") {
        document.getElementById("UserDiscomfortExerciseLabel").style.display = "block"
    }
    else {
        document.getElementById("UserDiscomfortExerciseLabel").style.display = "none"
    }
}

我遇到的問題是var feedback = $(this).attr('data-id')結果未定義,因此標簽在單擊時隱藏,但不再顯示。

有什么我想念的嗎?

先感謝您。

好的,嘗試刪除div上的onclick並添加:

$(document).ready(function()
{
    function feedback() {
        var feedback = $('#userDiscomfortResponse').val()
        if (feedback == "Yes") {
            document.getElementById("UserDiscomfortExerciseLabel").style.display = "block"
        }
       else {
           document.getElementById("UserDiscomfortExerciseLabel").style.display = "none"
       }
    }

    $("#userDiscomfortResponse").change(feedback);
    feedback();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM