如何刷新ViewBag? - javascript

我想发送1(新代码)或0(没有新代码),但是ViewBag仍然只接受写入它的第一个值。

控制者

        int timesRun = 0;
        int newID;
        private ApplicationDbContext Context = new ApplicationDbContext();

        [HttpGet]

        public IActionResult StartPage(string Code)
        {
            Debug.WriteLine("Start: " + Code);

            //Select BauTeilId
            var list = (from t in Context.Result select new { t.BauTeilId }).ToList();

            //Checking if already exists

            for (int i = 0; i < list.Count; i++)
            {

                if (Code != null)
                {
                    if (list[i].BauTeilId.Equals(Code))
                    {
                        newID = 0;
                        Debug.WriteLine("Keine neue ID " + newID);
                    }
                    else
                    {
                        newID = 1;
                        Debug.WriteLine("Neue ID " + newID);
                        break;
                    }
                    Debug.WriteLine(list[i].BauTeilId);
                }
            }
            ViewBag.newID = newID;
            return View();
        }

的HTML

@{

    ViewData["Title"] = "Home Page";
}

<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title>Starter</title>

    <style>
        p {
            margin-top: 30%;
            margin-left: 20%;
            margin-right: 20%;
            font-family: Arial;
            font-size: 25px;
            text-align: center;
        }

        #Code {
            border: 2px solid black;
        }
    </style>



</head>
<body>
    <h1>Example Code: 249765876358312345655</h1>


    <p>
        Eingabe des Maschinen Codes:
        <br />
        <input id="Code"
               name="Code"
               pattern=""
               size="30"
               spellcheck="false"
               title="Maschine Code"
               value="">
    </p>

    @{
        var data = ViewBag.newID;
        if(data != null)
        {
            data = ViewBag.newID.ToString().ToLower();
        }
    }

    <script>
            var x = document.getElementById("Code");
            x.addEventListener('input', function (event) {
                //Getting the regex sorted out
            x = document.getElementById("Code").value;
            let vars = x;
            let digits = vars.match(/^\d{13}(\d{6})\d{2}$/)[1];
            let stringDigits = digits.toString();

            if (stringDigits.length == 6 && vars.length == 21) {

                //New ID or not
                let newID = '@data'.toString().toLowerCase();
                Boolean(newID);
                alert(newID);
                if (newID === '1') window.location.href = '/home/NewIDSettingsPage';
                else if(newID === '0')window.location.href = '/home/Kontrolle';
                else alert("ERROR");

                //Send to Kontrolle
                document.getElementById("Code").innerHTML = "";
                localStorage.setItem("Code_Kurz", stringDigits);
                localStorage.setItem("Code_Lang", x);

                //Send Code to Controller
                $.ajax({
                    url: "@Url.Action("StartPage")",
                    type: "GET",
                    data: {Code: stringDigits},
                   success: function (data) { console.log("Succ: " + data); },
                    error: function (xhr, status, error) {
                       var errorMessage = xhr.status + ': ' + xhr.statusText;
                       console.log("ERROR: " + errorMessage);},
                });}});
    </script>
</body>
</html>

我不知道该如何解决,或者是否有其他解决方案。

类似问题:
How To Change or refresh data using ViewBag in MVC3
(该教程也没有帮助我)

参考方案

假设您的列表包含2行,并且在第一次迭代期间,此if (list[i].BauTeilId.Equals(Code))条件返回true,第二次返回false。

您的循环将根据上一次迭代设置newID值。在上一次迭代中,如果if (list[i].BauTeilId.Equals(Code))返回0,否则返回1。

查看以下更新的代码:

    if (Code != null)
    {
        if count > 0 will return 0 else return 1
        if (list.Where(x => x.BauTeilId.Equals(Code)).Count() > 0)
        {

            newID = 0;
            Debug.WriteLine("Keine neue ID " + newID);
        }
        else
        {
            newID = 1;
            Debug.WriteLine("Neue ID " + newID);

         }

    }
    //pass value in viewbag
    ViewBag.newID = newID;

使用C#执行JavaScript页面 - javascript

我正在尝试使用C#抓取一个网站。在此过程中的某个时候,网站返回了我需要执行的JavaScript页面,以便它将生成一些参数,然后使用所生成的参数作为查询变量来发布请求。这是JavaScript文件https://jsfiddle.net/7aw5vr59/浏览器生成的结果文件如下所示:<imimxxxyyy id="ActiveX"…

如何在JavaScript中将多个h1元素替换为h1,h2,h3,h4,h5,h6? - javascript

@foreach (var item in Model) { <div class="panel-heading"> <h1> <a href="#">@item.Title</a> </h1> </div> } 结果; (每页发布数:6)<…

在提交时在表单操作中获取变量丢失 - javascript

            当表单由onchange事件提交时,它不会保留get变量view。任何想法为什么会发生这种情况?提交后,这是它进入的网址,index?month=February&year=2014<form action="index?view=list" class="pure-form pure-fo…

选择后显示输入元素 - javascript

我有一个表格,其中取决于用户的选择,输入元素是否可见。实际上,用户正在以另一种形式设置已定义的合作伙伴类型,并且如果选中该元素,则允许在该类型的合作伙伴上可见的元素类型1将显示以下元素:<input type="text" id="partner" name="partner" class=&…

JavaScript将PHP中的字符串和整数传递给函数 - javascript

我正在尝试将字符串和整数都传递到同一函数中,但是引号引起了问题。我发现错误出在echo $q->info部分,我必须在此代码上使用双引号。有人可以帮我写这个$q->info,但不能获得真正的价值吗?到目前为止,我的代码是<td><a href="javascript:add(<?php echo $q->i…