混合Razor和Javascript代码

2020/10/22 18:41 · javascript ·  · 0评论

我对如何混合剃须刀和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));

从视图中分离javascript的一种非常规方法,但仍在其中使用razor来制作Scripts.cshtml文件并将混合的javascript / razor放在此处。

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代码和javascript

在JS脚本中时,将您的Razor代码包装在@ {}中,并注意仅使用@有时不起作用:

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

这将产生

function hideSurveyReminder() {
       False = true;
    }

在浏览器=(

本文地址:http://javascript.askforanswer.com/hunherazorhejavascriptdaima.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!