[C#] 혼합 면도기와 자바 스크립트 코드

면도기와 js를 혼합하는 방법과 혼동됩니다. 이것은 내가 붙어있는 현재 기능입니다.

<script type="text/javascript">

        var data = [];

        @foreach (var r in Model.rows)
        {
                data.push([ @r.UnixTime * 1000, @r.Value ]);
        }

c # 코드를 선언 할 수 <c#></c#>있고 다른 모든 것이 JS 코드 인 경우-이것이 내가 따르는 것입니다.

<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#>

이것을 달성하는 가장 좋은 방법은 무엇입니까?



답변

사용 <text>:

<script type="text/javascript">

   var data = [];

   @foreach (var r in Model.rows)
   {
      <text>
            data.push([ @r.UnixTime * 1000, @r.Value ]);
      </text>
   }
</script>


답변

코드 블록 내부 (예를 들어, @foreach), 당신은 마크 업 (또는,이 경우, JavaScript)를 표시해야 @:또는 <text>태그를 .

마크 업 컨텍스트 내에서 코드 블록 ( @{ ... }또는 @if, …) 으로 코드를 둘러싸 야합니다 .


답변

당신은 또한 간단하게 사용할 수 있습니다

<script type="text/javascript">

   var data = [];

   @foreach (var r in Model.rows)
   {
       @:data.push([ @r.UnixTime * 1000, @r.Value ]);
   }
</script>

참고 @ :


답변

더 많은 언어를 혼합하지 마십시오.

<script type="text/javascript">
    var data = @Json.Encode(Model); // !!!! export data !!!!

    for(var prop in data){
      console.log( prop + " "+ data[prop]);
    }

문제가 발생하면 시도해 볼 수도 있습니다

@Html.Raw(Json.Encode(Model));


답변

자바 스크립트를보기와 분리하지만 면도기를 사용하는 기존의 비 방법은 Scripts.cshtml파일 을 만들고 혼합 된 자바 스크립트 / 면도기를 배치하는 것입니다.

Index.cshtml

<div id="Result">
</div>

<button id="btnLoad">Click me</button>

@section scripts
{
    @Html.Partial("Scripts")
}

Scripts.cshtml

<script type="text/javascript">
    var url = "@Url.Action("Index", "Home")";

    $(document).ready(function() {
        $("#btnLoad").click(function() {
            $.ajax({
                type: "POST",
                url: url ,
                data: {someParameter: "some value"},
                contentType: "application/json; charset=utf-8",
                dataType: "json",

                success: function(msg) {
                    $("#Result").text(msg.d);
                }
            });
        });
    });
</script>


답변

<text>자바 스크립트로 cshtml 코드 모두에 태그를 사용할 수 있습니다.


답변

JS 스크립트 내부에서 Razor 코드를 @ {}로 감싸고 @ 만 사용하는 것을 알고 있어야합니다. 때로는 작동하지 않습니다.

function hideSurveyReminder() {
       @Session["_isSurveyPassed"] = true;
    }

이것은 생산할 것이다

function hideSurveyReminder() {
       False = true;
    }

브라우저에서 = (