Javascript,Razor,Asp.Net核心:未定义View.Element

问题描述 投票:1回答:1

在我的Asp.Net Core视图的Javascript中,未定义“ View.BestritteneRunden”。在我将其从Asp.Net MVC迁移到Asp.Net Core MVC之前,它一切正常。我通过研究发现的东西杀死了我的UI元素。计时器到期后,应用程序应在视图上递增该值。有人可以帮我吗?

这是我从我的角度来看的摘录:

@using PlaudertischSoftware.Models;
@using DevExtreme.AspNet.Mvc;
@using DevExpress.Web;
@using DevExtreme.AspNet.Data;

    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
    @model PlauderViewModel
    @section Styles {
        @*<link href="@Url.Content("~/Content/design.css")" rel="stylesheet" type="text/css" />*@
        <link href="~/css/design.css" rel="stylesheet" />
    }
    @{
        ViewBag.Title = "SpielView";
    }
    @using (Html.BeginForm("SpielView", "Plauder", FormMethod.Post))
    {
    <body style="z-index:-5">

        <div class="progress-info">
            <br />
            <span>Runde: <input id="txtRunde" name="BestritteneRunden" type="text" value="@Model.BestritteneRunden" style="width: 15px; border-width: 0px; background:none" />von 10</span>
            <br />
            Übrige Zeit 00:00:<span id="timer">10</span>
        </div>

        <div id="progress-info">
            @(Html.DevExtreme().ProgressBar()
                .ID("progressBarStatus")
                .Min(0)
                .Max(100)
                .Width("100%")
                .Height(50)
                .StatusFormat(new JS("progressBar_statusFormat"))
                .OnComplete("progressBar_onComplete")
                .OnValueChanged("progressBar_valueChanged")
            )
            <div class="form" style="margin-top:-25px">
                @(Html.DevExtreme().Button()
                    .ID("progress-button")
                    .Text("Starten")
                    .Width(120)
                    .OnClick("button_onClick")
                )
            </div>
        </div>
    </body>

        <script>
            var drehen = @Model.Drehrichtung;

            var seconds = 10,
                inProgress = false;

            window.intervalId = window.intervalId || null;

            function timer(){
                seconds--;
                setCurrentStatus();
                if (seconds === 0) {
                    clearInterval(intervalId);
                    seconds = 10;
                    return;
                }
            }

            function setCurrentStatus() {
                $("#progressBarStatus").dxProgressBar("option", "value", (10 - seconds) * 10);
                $("#timer").text(("0" + seconds).slice(-2));
            }

            function progressBar_statusFormat(value) {
                return;
            };

            function progressBar_onComplete(e) {
                inProgress = false;
                $("#progress-button").dxButton("option", "text", "Stoppen");

                e.element.removeClass("complete");


                //Daten zum Controller senden und auswerten
                $.ajax({
                    type: "POST",
                    url: "TimerStopped",
                    dataType: "json",
                    data: $('form').serialize(),
                    success: function (view) {

                $("#txtRunde").attr("value", view.BestritteneRunden);


                        if (view.BestritteneRunden < 11) {
                            button_onClick(e);
                        }
                        else {
                            location.replace("AuswertungsView");
                        }
                        $("#slider-value").dxNumberBox("instance").option("value", 0);},
                    error: function (result) {
                        alert(result.text);
                    }
                });
            };

            function button_onClick(e) {
                    clearInterval(intervalId);

                    $("#progressBarStatus").removeClass("complete");

                    if (inProgress) {
                        e.component.option("text", "Fortsetzen");
                        clearInterval(intervalId);
                    } else {
                        e.component.option("text", "Stoppen");
                        setCurrentStatus();
                        intervalId = setInterval(timer, 1000);
                    }

                inProgress = !inProgress;
            };

        </script>
    }
javascript asp.net-core razor
1个回答
0
投票

在我的Asp.Net Core视图的Javascript中,未定义“ View.BestritteneRunden”。

该问题可能是由于对所有JSON属性名称使用驼峰式大小写引起的。

如果检查返回的数据view,它看起来像bestritteneRunden: 10,而不是BestritteneRunden: 10

要修复它,您可以使用view.bestritteneRunden修改js代码。

$("#txtRunde").attr("value", view.bestritteneRunden);

或将PropertyNamingPolicy设置为null

services.AddControllersWithViews()
    .AddJsonOptions(options =>
    {
        options.JsonSerializerOptions.PropertyNamingPolicy = null;
    });
© www.soinside.com 2019 - 2024. All rights reserved.