0

我创建了一个 .Net Core Razor Pages 应用程序。剃刀页面中有两个输入字段和一个提交按钮。当我单击按钮时,输入字段中的数字需要增加。在 OnGet() 方法中分配了一条消息“Hello World”。

为了保留信息,我使用了不显眼的 ajax。在这种情况下,消息将保留在那里,但数字不会增加。有没有什么方法可以刷新数字而无需在 ajax 回调方法中编写代码来单独为每个元素分配值?

最终,我的目标是发布页面的一部分并在回发时刷新字段中的绑定数据,而无需在 ajax 回调中单独为控件分配值。代码示例如下

注意:需要在不重新加载整个页面的情况下执行此操作。

索引.cshtml

@page
@model IndexModel
@{
    ViewData["Title"] = "Home page";
}


<h1>@Model.Message</h1>

<form  method="post" data-ajax="true" data-ajax-method="post" >
    <div>
        <input type="text" asp-for="Num1" />
        <input type="text" asp-for="Num2" />
      

        <input type="submit" value="Submit" />

    </div>

   
</form>

索引.cshtml.cs

  public class IndexModel : PageModel
    {
        [BindProperty]
        public int Num1 { get; set; } = 0;
        [BindProperty]
        public int Num2 { get; set; } = 0;
        public string Message { get; set; }

        public void OnGet()
        {
            Message = "Hello World";
            GetNumbers();
        }


        void GetNumbers()
        {
            Num1 += 1;
            Num2 += 5;

        }

        public IActionResult OnPost()
        {
     
            GetNumbers();
            return Page();
        }

    }
4

1 回答 1

0
ModelState.Remove("Nmu1");
ModelState.Remove("Nmu2");

与 ASP.NET WebForms 类似,ASP.NET Core 表单状态存储在 ModelState 中。发布后,表单将加载绑定值,然后使用 ModelState 进行更新。所以需要清除ModelState中的值,否则会被覆盖。

于 2021-02-21T02:07:42.147 回答