【问题标题】:.Net Core Razor Pages - Refresh fields after post -unobtrusive ajax.Net Core Razor 页面 - 后不显眼的 ajax 后刷新字段
【发布时间】:2020-11-26 10:05:35
【问题描述】:

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

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

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

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

Index.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>

Index.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();
        }

    }

【问题讨论】:

    标签: ajax razor refresh postback unobtrusive


    【解决方案1】:
    ModelState.Remove("Nmu1");
    ModelState.Remove("Nmu2");
    

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

    【讨论】:

    • 请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常更有帮助,质量更高,更有可能吸引投票。
    猜你喜欢
    • 2021-03-27
    • 2021-11-16
    • 2019-05-07
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    • 2021-12-30
    • 2016-10-09
    • 1970-01-01
    相关资源
    最近更新 更多