ASP.NET Core Razor网页IIS上的Web应用程序-为什么在一台计算机上输入的对象变量可以在另一台计算机上查看?

nzkunb0c  于 2023-10-19  发布在  .NET
关注(0)|答案(2)|浏览(110)

好吧,我在这里使用一个非常简单的Web应用程序,并有几个页面:
orderform.cshtml

@page
@model mysite.Pages.orderformModel

@{
}

<form method="post">
    <div id="input-div" class="form-group mb-2 mt-2">
        <input id="firstname" class="form-control" />
        <input type="button" value="Next" class="btn btn-primary" onclick="Update()" />
    </div>
</form>

<div id="confirm-div" hidden></div>

<script>
    function Update() {
        document.getElementById('input-div').style.backgroundColor = 'green';

        var firstnamein = document.getElementById('firstname').value;
        var fileform = new FormData;

        fileform.append("firstnamein", firstnamein);

        $.ajax(
            {
                url: "./orderform?handler=Update",
                type: 'POST',
                data: fileform,
                async: true,
                cache: false,
                contentType: false,
                processData: false,
                beforeSend: function (xhr) {
                    xhr.setRequestHeader("XSRF-TOKEN", $('input:hidden[name="__RequestVerificationToken"]').val());
                },
                success: function (Return) {
                }
            });

        document.getElementById('input-div').hidden = true;
        document.getElementById('confirm-div').hidden = false;

        $('#confirm-div').load('./orderview');
    }
</script>

orderform.cshtml.cs

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;

namespace mysite.Pages
{
    public class orderformModel : PageModel
    {
        public static string firstname {  get; set; }

        public void OnGet()
        {
        }

        public async Task<IActionResult> OnPostUpdateAsync(string firstnamein)
        {
            firstname = firstnamein;
            return Content("OK");
        }
    }
}

orderview.cshtml

@page
@{
    Layout = "_PlainLayout";
}

<div>
    Hello @orderformModel.firstname
</div>

因此,当您在一台计算机上转到orderform页面,输入名称并单击下一步时,它将显示“Hello 'firstname'”。
如果您随后转到另一台计算机并打开页面orderview,它将显示在另一台计算机上输入的名称。我想知道为什么会这样。为什么另一个人在另一台计算机上拉页面可以查看在第一台计算机上输入的数据。我担心我错过了IIS服务器上Web应用程序的一些基本方面。
我一直认为,每次计算机或浏览器访问该网站时,都会创建一个新的网站示例和变量,但似乎并非如此。我希望有人能给我解释一下这是怎么回事。希望你明白我在问什么!
我尝试使用会话变量,认为它们可能是浏览器会话唯一的,结果相同。我真的不打算使用会话变量,但确实尝试了。不知道还能尝试什么。只是需要澄清为什么看似不同的示例或访问不同的计算机上的网站共享对象或变量数据。

9cbw7uwe

9cbw7uwe1#

对不起,我没有时间测试你的代码,但我想问题来自声明属性

public static string firstname { get; set; }

asstatic-它将始终采用最后输入的值。

djp7away

djp7away2#

非静态类的静态字段在所有示例之间共享。因此,一个示例所做的更改将反映在其他示例中。
无论创建了多少个类的示例,静态成员都只存在一个副本。
您可以查看静态成员以了解更多信息。

相关问题